在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
还是让我们先来看一下代码:
public class UserControlBlock : ExtendedControl, IPageBlock
{ // the other code public string SourceFile { get { return _sourceFile; } set { if (_sourceFile != value) { _sourceFile = value; _sourceLoaded = false; } } } // the other code } 查看了一下对象浏览器中的关于这个类的成员列表,也变成了两个get/set方法,还是找不到那个SourceFile属性: 百思不得其解。。。一个偶然的机会让我注意到了这个类实现了接口IPageBlock,这个接口的源码如下:
public interface IPageBlock
{ string SourceFile { get; } // Only getter are declared here. bool SourceLoaded { get; } void LoadSource(); Control Control { get; } } 找到原因了该简单总结一下了:当实现类中对应属性的访问器的数目多于接口中声明的属性访问器的时候,虽然有些不一致,但是这个时候C#语法是允许的,不认为是错误,编译照通过。但是原本直观的属性访问语法就会被拆散成两个以get_和set_开头的方法了,以后大家可要当心了:) 另外不知道C#2.0中有没有这样的问题?感兴趣的朋友不妨尝试一下,并告知大家,多谢! |
请发表评论