在.NET中和event最相近的不是普通field,而是property。property可以override吗?可以!所以event可以override吗?也可以!不信编译下面的代码:public delegate void Foo(); public class A { public virtual event Foo foo; }public class B : A { public override event Foo foo; } ... 但问题是override一个event的行为牵扯到event的实现细节,如果不了解这些细节,其结果决不是你所期望的。等你得到一个exception的时候,就知道我再说什么了。P.S. 至于接口不变,至少也要到release版出来以后吧?据我所知M$在产品的兼容性方面应该是做的最好的软件公司之一了。把WinForm改成Windows.Form就那么麻烦?将就以下嘛!
protected override event XXX Init;//如果base class中Init是virtual的话。但override event的内部机制没那么简单,最好不要这样做。
还请赐教
- 微软全球技术中心 VC技术支持本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款(<http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp>)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(<http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782)>)。
======================
但是还不如太清晰的概念,那么是不是说我无法重新写 Calendar:Control 的 init 来增加该构件的功能? 如果需要,应该重新写哪一个函数呢?你真是MS的人吗?
Beta1和Beta2怎么相差那么大,好多BETA1里支持的东西BETA2都没有了,如果你们在遵循COM的原则开发,为什么不是一旦公开发行的接口就保持不变?
现在BETA2里支持的接口在正式RELEASE的版本里是否会保留?我不希望我们都在学习你们的东西结果真正出来的时候却很大部分要重新来过。
Thanks!
public class A {
public virtual event Foo foo;
}public class B : A {
public override event Foo foo;
}
...
但问题是override一个event的行为牵扯到event的实现细节,如果不了解这些细节,其结果决不是你所期望的。等你得到一个exception的时候,就知道我再说什么了。P.S. 至于接口不变,至少也要到release版出来以后吧?据我所知M$在产品的兼容性方面应该是做的最好的软件公司之一了。把WinForm改成Windows.Form就那么麻烦?将就以下嘛!