动作属性
任何人都可以解释我这段代码的提取。
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; }