1

谁能解释一下这段代码摘录。

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

我对此有点困惑。我大致知道它的作用,但如果有人能稍微了解一下它会更好。

4

3 回答 3

4

serialpacket是一个抽象属性,在实现时将返回一个方法引用或 lamda,它接受一个整数参数并且不返回任何内容。

例如(忽略设置器)。

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);

因为它是一个带有 setter 的属性,所以也可以这样做:

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 回答