トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
C#
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ プロパティ( Accessor )


  [attributes] [modifiers] type identifier {accessor-declaration}


   要は, VarMem 名を指定するだけで, 値を参照. セットできる. 



    プロパティとは、暗黙のアクセッサメソッド。
    通常のメンバにアクセスするように見せかけ、内部ではメソッドを通してくれる。

    そのクラスを利用するプログラマはアクセッサメソッドを意識せずにメンバにアクセスできる。

    accessor-declaration には、プロパティのアクセッサを宣言する。
    このアクセッサがプロパティの本体であり、暗黙のアクセッサメソッドとなる。

    アクセッサに対する代入行為があった場合、暗黙的に set アクセッサが呼ばれる。
    set アクセッサは、void 型の戻値でプロパティ型のパラメータを一つ持っているメソッドと同じ。
    代入された暗黙的な値は、常に value という名前を持つ。
    
    代入以外の形でプロパティが参照された場合は get アクセッサが呼び出されます
    get アクセッサはプロパティ方の戻りとを持つ引数なしのメソッドと同じ。    

  POINT
    MSIL レベルでは「プロパティ」という概念は存在しない。
    プロパティはコンパイル時にアクセッサメソッドに変換されている。

    プロパティをオーバーライドするということも可能
    ただし、この時はアクセッサレベルではなくプロパティレベルでオーバーライドされるので
    set アクセッサをオーバーライドした場合は、get アクセッサもオーバーライドされます    

    メンバ変数を変更されたくないということもあるでしょう
    set アクセッサを省略することで読み取り専用プロパティを作れます
    

class StringTest {

  private string strName;

  // [Strname] が set/get する際の名前.
  public string StrName {
    get {
      System.Console.WriteLine("strName を要求");
      return strName;
    }
    set {
      System.Console.WriteLine(value + "を設定");
      strName = value;
    }
  }
}

class Client {
  static void Main() {
    Kitty obj = new StringTest();
    obj.StrName = "test";
    string str = obj.StrName;
  }
}  




















NINJAIDX 10