在我开始使用C#之前,我主要来自C/C++背景。其中一件事我与在C#中的第一个项目做的是让这样的为什么在C#中很难使用未签名的CLR类型?
class Element{
public uint Size;
public ulong BigThing;
}
我当时被这需要事实羞愧类铸件:
int x=MyElement.Size;
一样
int x=5;
uint total=MyElement.Size+x;
为什么语言设计者决定让有符号和无符号整数类型不能隐式转换?为什么在整个.NET库中未使用无符号类型?例如String.Length
永远不能为负,但它是一个有符号的整数。
即使在C++中,从unsigned到signed或cast的转换也会导致警告。 – 2010-07-15 20:57:58
@Seva取决于编译器:P ..我意识到我的第一个案例是一个弱案例,但我的第二个案例实际上更多的是我的意思,因为没有数据丢失的机会,除非'x'为负 – Earlz 2010-07-15 21:01:55
在第二个计数,请参阅下面的回复... – 2010-07-15 21:06:31