誰かが私にこのコード抽出を説明できますか?
public abstract Action<int> serialpacket { set; get; }
私はそれについて少し混乱しています。私はそれが何をするかを大まかに知っていますが、誰かがそれに少し光を当てることができればもっと良いでしょう。
serialpacket
は、実装時にメソッド参照または整数パラメーターを取り、何も返さないラムダを返す抽象プロパティです。
例(セッターを無視)。
public override Action<int> serialpacket
{
get { return i => Console.WriteLine(i); }
set { ... }
}
また
public void Trousers(int i)
{
Console.WriteLine(i);
}
public Action<int> serialpacket
{
get { return Trousers; }
set { ... }
}
次に、次のように serialpacket を使用できます。
serialpacket(10);
セッターを持つプロパティであるため、次のこともできます。
public override Action<int> serialpacket { get; set; }
serialpacket = Trousers;
serialpacket(10);
// prints 10 to the console
上記と同じ定義でTrousers
。
単一のパラメーターを持ち、値を返さないメソッドをカプセル化します。
http://msdn.microsoft.com/en-us/library/018hxwa8.aspx
編集:あなたの例では、値を取り、値を返さないabstract
デリゲートを(派生クラスで-だから)割り当てることができるプロパティです。int
これはタイプのプロパティですAction<int>
。Action<int>
パラメータを取りint
、値を返さない関数です。
次のように使用できます。
instance.serialpacket(42);
プロパティはabstract
- 具体的な派生クラスでオーバーライドする必要があります。
abstract
パブリックセッターを持つプロパティを持つことは少し奇妙です。おそらくより良いのは、読み取り専用プロパティです。
public abstract Action<int> serialpacket { get; }
それ以外の場合、プロパティをパブリックに設定できる場合は、非抽象バージョンで十分です
public Action<int> serialpacket { get; set; }
セッターを派生クラスに制限することもできます。
public Action<int> serialpacket { get; protected set; }