「自己参照」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator |
imported>Administrator (→記述例) |
||
8行目: | 8行目: | ||
== 記述例 == | == 記述例 == | ||
[[C Sharp|C#]]による自己参照クラスの記述例を示す。 | [[C Sharp|C#]]による自己参照クラスの記述例を示す。 | ||
+ | この例ではHumanクラスの中においてフィールド変数のデータ型としてHumanクラスを使用している部分が自己参照にあたる。 | ||
+ | なお[[C Sharp|C#]]では[[クラス]]の[[インスタンス]]はすべて[[参照]]であるため、たとえば[[C++]]などのように[[参照]]や[[ポインター]]を明示する必要はない。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
// 人間クラス | // 人間クラス |
2012年7月6日 (金) 11:37時点における版
自己参照(self reference)とは、循環参照のひとつで、あるデータ構造において、その中に含まれるデータが同一のデータ構造への参照もしくはポインターとなっている物のことである。
概要
自己参照は主として、ツリー構造や、リスト構造のひとつである連結リストなどを表す際に多用される。
自己参照を持つデータ構造を表すのに、構造体を用いる物は自己参照構造体、クラスを用いる物は自己参照クラスなどと呼ばれる。この2つには構造体化クラスかというくらいしか違いはないが、主要なアルゴリズムで使われるデータ構造の多くは、構造体が全盛の時代にほぼ出尽くした感があり、現在でも自己参照と言えば「自己参照構造体」というくらい用語としての強弱がはっきりしているという傾向がある。
記述例
C#による自己参照クラスの記述例を示す。 この例ではHumanクラスの中においてフィールド変数のデータ型としてHumanクラスを使用している部分が自己参照にあたる。 なおC#ではクラスのインスタンスはすべて参照であるため、たとえばC++などのように参照やポインターを明示する必要はない。
// 人間クラス
class Human
{
public string Name;
public DateTime Birth;
// 父親
// 自己参照
public Human Father;
// 母親
// 自己参照
public Human Mother;
}
関連項目
参考文献