相关疑难解决方法(0)

为什么unsigned int不符合CLS?

为什么无符号整数不符合CLS?

我开始认为类型规范只是为了性能而不是为了正确性.

.net c# cls-compliant unsigned-integer

104
推荐指数
4
解决办法
2万
查看次数

为什么Array.Length是int,而不是uint

为什么是Array.Lengthint,而不是uint.这让我感到困扰(只是一点点),因为长度值永远不会是负数.

这也迫使我在我自己的类上使用int作为length-property,因为当你指定一个int值时,这需要显式地转换...

所以最终的问题是:对于unsigned int(uint)有什么用?甚至微软似乎也没有使用它们.

.net c# int uint

87
推荐指数
2
解决办法
1万
查看次数

为什么.NET在某些类中使用int而不是uint?

即使在框架类中,我总是遇到int用于.Count等等的代码而不是代码uint.

这是什么原因?

.net c#

50
推荐指数
3
解决办法
4505
查看次数

为什么Count不是无符号整数?

可能重复:
为什么.NET在某些类中使用int而不是uint?
为什么Array.Length是int,而不是uint

我一直想知道为什么.Count不是无符号整数而不是有符号整数?

例如,拿ListView.SelectedItems.Count.元素的数量不能少于0,那么为什么它是一个有符号的int?

如果我尝试测试是否有选择的元素,我想测试

 if (ListView.SelectedItems.Count == 0) {}
Run Code Online (Sandbox Code Playgroud)

但因为它是有符号整数,我必须测试

 if (ListView.SelectedItems.Count <= 0) {}
Run Code Online (Sandbox Code Playgroud)

或者有什么情况.Count可能<0?

.net c#

47
推荐指数
4
解决办法
5813
查看次数

长度/计数的有符号与无符号整数

为了表示长度或计数变量,使用有符号无符号整数是否更好?

在我看来,C++ STL往往更喜欢无符号(std::size_t就像在std :: vector :: size()中一样,而C#BCL往往更喜欢有符号整数(比如在ICollection.Count中).

考虑到长度或计数是非负整数,我的直觉会选择无符号 ; 但我不明白为什么.NET设计者选择了有符号整数.

什么是最好的方法?每个人的利弊是什么?

c# c++ unsigned signed

22
推荐指数
1
解决办法
1万
查看次数

为什么String.Length签名?

可能重复:
为什么.Net Framework不使用无符号数据类型?

C#编程语言(涵盖C#4.0)(第4版),1.3类型和变量,第9页.

Jon Skeet说;

Hooray for byte是一个无符号类型!事实上,在Java中,一个字节被签名(并且没有无符号的等价物),这使得很多无意义的错误容易出错.很可能我们都应该比我们更多地使用uint,请注意:我确信许多开发人员在需要整数类型时默认达到int.框架设计者当然也属于这一类:为什么String.Length应该签名?

当我反编译String.Length ;

/// <summary>
    /// Gets the number of characters in the current <see cref="T:System.String"/> object.
    /// </summary>
    /// 
    /// <returns>
    /// The number of characters in the current string.
    /// </returns>
    /// <filterpriority>1</filterpriority>
    [__DynamicallyInvokable]
    public int Length { [SecuritySafeCritical, __DynamicallyInvokable, MethodImpl(MethodImplOptions.InternalCall)] get; }
Run Code Online (Sandbox Code Playgroud)

也在MSDN中 ;

Length属性返回此实例中Char对象的数量,而不是Unicode字符数.原因是Unicode字符可能由多个Char表示.

它返回当前字符串中的字符对象数.为什么在已经存在类型的情况下String.Length返回?什么是的点和?Int32UInt32signed-unsigned byteString.Length

.net c# unsigned signed string-length

1
推荐指数
2
解决办法
690
查看次数

标签 统计

c# ×6

.net ×5

signed ×2

unsigned ×2

c++ ×1

cls-compliant ×1

int ×1

string-length ×1

uint ×1

unsigned-integer ×1