谁能给我解释一下这个代码摘录。
public abstract Action<int> serialpacket { set; get; }我对此有点困惑。我大致知道它是做什么的,但如果有人能稍微解释一下,那就更好了。
发布于 2013-02-28 22:40:34
serialpacket是一个抽象属性,在实现时,它将返回一个方法引用或lamda,后者接受一个整数参数,但不返回任何内容。
例如(忽略setter)。
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(10);因为它是一个带有setter的属性,所以也可以这样做:
public override Action<int> serialpacket { get; set; }
serialpacket = Trousers;
serialpacket(10);
// prints 10 to the console具有与上面相同的Trousers定义。
发布于 2013-02-28 22:39:54
封装只有一个参数且不返回值的方法。
http://msdn.microsoft.com/en-us/library/018hxwa8.aspx
编辑:在您的示例中,它是一个属性,您可以(在派生类中-因为它是abstract)为其分配一个接受int且不返回值的委托。
发布于 2013-02-28 22:40:24
这是Action<int>类型的属性。Action<int>是一个接受int参数并且不返回值的函数。
您可以按如下方式使用它:
instance.serialpacket(42);该属性为abstract -它必须在具体的派生类中被重写。
有一个带有公共setter的abstract属性有点奇怪。更好的方法可能是只读属性:
public abstract Action<int> serialpacket { get; }否则,如果该属性可以公开设置,那么非抽象版本就足够了
public Action<int> serialpacket { get; set; }您还可以将setter限制为派生类:
public Action<int> serialpacket { get; protected set; }https://stackoverflow.com/questions/15138195
复制相似问题