让人生气的特性——C#属性访问器不支持参数!
最近两月,边学边用C#。发现它有时很好用。有时让你气个半死!
今天写了一个集合类。想声明一个Item属性,用Index做定位参数。
刚开始这样写:
public object Item(int Index) {
get { ……}
}
编译后死活有个警告,说get后要有分号(想必是编译器把它当成函数了)。
后来,把参数声明(int Index)换成[int Index],连编译都不让过!
郁闷了半天,才在MSDN上找到集合类的示例代码,打开一看,它的Item根本不是属性,而是方法!
个人感觉,C#这种属性访问器语法,虽然很有创意,却很不好用。
不能设置参数是一个缺点。
get和set的可见域必须一样也是一个缺点(听说Visual Studio.net 2005改进了这一点)。
再有一个缺点是:虽然加了个访问器机制,还是没把类的域变量与属性过程融合起来。仍然要先声明变量,后声明访问器。这里面的重复工作太多了。