动作属性

任何人都可以解释我这段代码的提取。

public abstract Action serialpacket { set; get; } 

我有点困惑。 我大致知道它的作用,但如果有人能够对它有所了解会更好。

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

例如(忽略了设定者)。

 public override Action serialpacket { get { return i => Console.WriteLine(i); } set { ... } } 

要么

 public void Trousers(int i) { Console.WriteLine(i); } public Action serialpacket { get { return Trousers; } set { ... } } 

然后可以使用serialpacket:

 serialpacket(10); 

由于它是一个带有setter的属性,人们也可以这样做:

 public override Action 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类型的属性。 Action是一个接受int参数但不返回值的函数。

您可以按如下方式使用它:

 instance.serialpacket(42); 

该属性是abstract – 必须在具体的派生类中重写。

拥有一个带有公共setter的abstract属性有点奇怪。 可能更好的是只读属性:

 public abstract Action serialpacket { get; } 

否则,如果属性可以公开设置,那么非抽象版本就足够了

 public Action serialpacket { get; set; } 

您还可以将setter限制为派生类:

 public Action serialpacket { get; protected set; }