首页 新闻 搜索 专区 学院

CLS的问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2008-11-29 06:32

我记得以前写 C# 代码,如果用来uint 类型,又没有指定[assembly: System.CLSCompliant(false)],编译器会给出一个 CLS不兼容的警告。如果用

[assembly: System.CLSCompliant(true)] 则直接是一个错误。

但最近我用相同的环境  VS2005 编译代码,这个警告或者错误消失了,我问了好几个人,他们的环境中编译也没有这个警告了,我google  找了半天也没有找到哪里说明从什么时候起 uint 变成 CLS 兼容了,或者 VS编译器忽略这个判断了。哪位知道缘由的能给解答一下吗?

我现在 .Net 2.0 是 SP1

是不是这个 SP1 捣的鬼?

eaglet的主页 eaglet | 专家六级 | 园豆:17119
提问于:2008-11-16 19:10
< >
分享
所有回答(2)
0

uint本来就是CLS不兼容的类型,只有[assembly: System.CLSCompliant(true)]时,才会显示警告,不会显示错误信息,[assembly: System.CLSCompliant(false)]时,没有任何警告或错误信息。

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2008-11-16 20:58
0

在不指名[assembly: System.CLSCompliant(false)]时的确不会得到任何警告。

不过这应该无所谓吧?如果你希望程序集是CLS兼容的,加上[assembly: System.CLSCompliant(true)]就好了。如果你没有这种期望,默认情况也不会发出警告,多好?

我没有在之前版本的.NET中观察过这一问题,但我想如果真如楼主所说,以前有这种警告,那我猜微软是为了改善用户体验才去掉了这个警告。

Anders Liu | 园豆:230 (菜鸟二级) | 2008-11-17 10:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册