1

誰かが私にこのコード抽出を説明できますか?

public abstract Action<int> serialpacket { set; get; }

私はそれについて少し混乱しています。私はそれが何をするかを大まかに知っていますが、誰かがそれに少し光を当てることができればもっと良いでしょう。

4

3 に答える 3

4

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

于 2013-02-28T14:40:34.283 に答える
0

単一のパラメーターを持ち、値を返さないメソッドをカプセル化します。

http://msdn.microsoft.com/en-us/library/018hxwa8.aspx

編集:あなたの例では、値を取り、値を返さないabstractデリゲートを(派生クラスで-だから)割り当てることができるプロパティです。int

于 2013-02-28T14:39:54.220 に答える
0

これはタイプのプロパティです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; }
于 2013-02-28T14:40:23.990 に答える