• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

您的位置:您的位置:软件测试技术门户 >> 软件测试技术 >> 开发语言 >> .net >> 查看资讯

字号: | 推荐给好友 上一篇 | 下一篇

Visual C# .NET2003语言的改变

发布: 2008-5-29 10:38 | 作者: 不详 | 来源: 智慧谷 | 查看: 48次 | 进入领测软件测试网论坛讨论

领测软件测试网

es:G8P V,~0{

m&J3guE.M#[ TgD软件测试技术门户Bb&Q&dmI |
   }
3n#lCbd{}
p5I M5\^FV当 foreach 语句在某个对象集合中使用迭代时,它将执行 GetEnumerator 方法并接收转换为 Base 类型的 Derived 实例作为它的迭代程序类型。当然,Base 类型无需为了调用它的 Current 和 MoveNext 方法而实现 Ienumerator 接口。在早期编译器中,Derived 类型的 Dispose 方法不被调用,因为它不实现 IEnumerator,并且类 Base 对于实现 Idisposable 不是静态已知的。在新的编译器中,Dispose 方法被调用,因为编译器在所有 foreach 语句的迭代程序类型中检查是否存在 Idisposable 接口。由于 GetEnumerator 调用的结果是一个转换为 Base 类型的 Derived 类型,并且由于 Derived 类型实现 Idisposable 接口,因此编译器动态检查 Idisposable 接口是否存在,会导致对 Dispose 方法的调用。

+Eq ~!K{TV

_:t%Jv(|X].Z(}属性声明的改变
/Asn0~v I+mECMA C# 标准明确禁止为相应的属性创建获取和设置函数。实际上,C# 编译器将属性声明转换为获取和设置函数,以便不支持属性的语言也可以访问数据。因此,下面的代码是无效的,因为编译器会产生 get_Prop 和 set_Prop 方法,而这两个方法与用户声明的方法发生冲突:

/HX'Z)b&F