クラスメンバーの関数と変数について

用語

Unity スクリプトリファレンスの”関数”や”変数”という表現は、以前UnityScript(JavaScript)等を使えたのでこのような表現になっていると思いますが、C#ではメソッドやフィールドという表現の方が理解しやすいと思います。

メソッド

class ClassName {
    public void Method() {}
}
仕様呼び方
Unity スクリプトリファレンス(2021.1)関数
Unity Scripting API(~2017.1)Functions
Unity Scripting API(2017.2~)Methods
Microsoft C#リファレンスメソッド
Javaメソッド
C++メンバー関数

英語版ではMethodsと表現しているので、本サイトでもメソッドを使います。

静的メソッド

class ClassName {
  public static void StaticMethod() {}
}

ClassName.StaticMethod()で呼び出します。静的メソッド内ではthisが使えず、静的でないフィールドやメソッドにアクセスできません。

仕様呼び方
Unity スクリプトリファレンス(2021.1)Static 関数
Unity Scripting API(~2017.1)Static Functions
Unity Scripting API(2017.2~)Static Methods
Microsoft C#リファレンス静的メソッド
Javaクラスメソッド
C++静的メンバー関数

クラスメソッドが分かりやすい気がしますが、C#では静的(Static)と表現していると思うので、本サイトでは静的メソッドを使います。

フィールド

class ClassName {
  int field;
  int staticField;
}
仕様呼び方
Unity マニュアル(2021.1)変数、Static 変数
Unity Manual(2021.1)Variable、Static Variable
Microsoft C#リファレンスフィールド、静的フィールド
Javaインスタンス変数、クラス変数
C++データメンバー、静的データメンバー

C#にグローバル変数やファイルスコープの静的変数はありませんが、変数には引数やローカル変数もあるので単に変数と呼ぶとまぎらわしい場合があります。本サイトではフィールドを使います。

静的フィールド

class ClassName {
  static int staticField;
}

ひとつの静的フィールドはインスタンスの数に関係なくひとつしかありません。クラスに属しClassName.staticFieldのようにアクセスします。

仕様呼び方
Unity マニュアル(2021.1)Static 変数
Unity Manual(2021.1)Static Variable
Microsoft C#リファレンス静的フィールド
Javaクラス変数
C++静的データメンバー

インスタンスフィールド

class ClassName {
  int field;
}

インスタンスフィールドはインスタンス毎に異なる値を持てます。

仕様呼び方
Unity マニュアル(2021.1)変数
Unity Manual(2021.1)Variable
Microsoft C#リファレンスインスタンスフィールド
Javaインスタンス変数
C++静的データメンバー

プロパティ

class ClassName {
  public int property { get; set; }
}

プロパティはgetter、setterによりアクセスします。

仕様呼び方
Unity スクリプトリファレンス(2021.1)変数
Unity Scripting API(~2017.1)Variables
Unity Scripting API(2017.2~)Properties
Microsoft C# リファレンスプロパティ
Java
C++

プロパティはInspector windowに表示されないので、プロパティとフィールドは区別した方がいい場合があります。だた、コード上で使う場合は同じように使えるので区別しない場合があります。

カプセル化視点ではフィールドは通常private、プロパティは通常publicが自然だと思います。

フィールドをそのままアクセスできるプロパティはあまり意味がないので、publicなフィールドという使われ方もします。

コメント