C# 使用int和uint的区别以及何时使用

C# 使用int和uint的区别以及何时使用,c#,unsigned-integer,C#,Unsigned Integer,使用int和uint有什么区别?到目前为止,我看到的所有示例都使用int表示整数。使用uint有什么好处吗?谢谢。uint表示无符号整数,您可以将其用于0+4G范围 其中,正常(有符号)int具有-2G+2G范围 什么时候使用?几乎从来没有。它不是符合CLS的类型,因此您不应该在程序集的公共接口中使用它。不是所有的.NET语言都能处理它 它们主要用于非托管代码的p/Invoke和一些罕见的位掩码情况。在.NET中,我们使用普通的有符号整数进行大多数位屏蔽。首先,uint不符合CLS(针对.NET

使用int和uint有什么区别?到目前为止,我看到的所有示例都使用int表示整数。使用uint有什么好处吗?谢谢。

uint
表示无符号整数,您可以将其用于0+4G范围
其中,正常(有符号)int具有-2G+2G范围

什么时候使用?几乎从来没有。它不是符合CLS的类型,因此您不应该在程序集的公共接口中使用它。不是所有的.NET语言都能处理它


它们主要用于非托管代码的p/Invoke和一些罕见的位掩码情况。在.NET中,我们使用普通的有符号整数进行大多数位屏蔽。

首先,uint不符合CLS(针对.NET平台的其他语言不一定实现它),您应该尽可能避免在公共api中使用它。当然,对于uint,它们的范围不同(0…4294967295),对于int,-2147483648到2147483647)。主要的区别很简单,int是有符号的,而uint是无符号的。因为uint不允许负数,所以它的范围是0到4294967295,而int的范围是-2147483648到2147483647


如果您的场景中不能有负整数,或者负值没有意义,那么无符号整数可能是一个不错的选择。但是,如果您不需要额外的范围,并且永远不会低于0,那么这并不重要,您可以使用int保存字符。

Related:所以在实际操作中最好只使用int?@Thickbook:是的,直到您有非常清楚的理由使用uint,这将是罕见的。@Thickbook:是的,我在实践中也会使用int。即使您不需要负数,在大多数接口上也几乎不支持uint。铸造并不是那么简单,因为uint可能太高了。Just int是标准值,例如Count和Length属性也是标准值,它们在定义上从来都不是负数。@Stefan:对。Count和Length是有符号的,因为如果IndexOf(其中-1==not found)的结果是另一种类型,这将很麻烦。uint在嵌入式技术中被大量使用。与外部仪器的通信。