我记得以前写 C# 代码,如果用来uint 类型,又没有指定[assembly: System.CLSCompliant(false)],编译器会给出一个 CLS不兼容的警告。如果用
[assembly: System.CLSCompliant(true)] 则直接是一个错误。
但最近我用相同的环境 VS2005 编译代码,这个警告或者错误消失了,我问了好几个人,他们的环境中编译也没有这个警告了,我google 找了半天也没有找到哪里说明从什么时候起 uint 变成 CLS 兼容了,或者 VS编译器忽略这个判断了。哪位知道缘由的能给解答一下吗?
我现在 .Net 2.0 是 SP1
是不是这个 SP1 捣的鬼?
uint本来就是CLS不兼容的类型,只有[assembly: System.CLSCompliant(true)]时,才会显示警告,不会显示错误信息,[assembly: System.CLSCompliant(false)]时,没有任何警告或错误信息。
在不指名[assembly: System.CLSCompliant(false)]时的确不会得到任何警告。
不过这应该无所谓吧?如果你希望程序集是CLS兼容的,加上[assembly: System.CLSCompliant(true)]就好了。如果你没有这种期望,默认情况也不会发出警告,多好?
我没有在之前版本的.NET中观察过这一问题,但我想如果真如楼主所说,以前有这种警告,那我猜微软是为了改善用户体验才去掉了这个警告。