gpt4 book ai didi

c# - 为什么未签名的 CLR 类型很难在 C# 中使用?

转载 作者:太空狗 更新时间:2023-10-29 17:32:19 25 4
gpt4 key购买 nike

在开始使用 C# 之前,我的背景主要是 C/C++。我在 C# 中的第一个项目中所做的其中一件事就是创建一个这样的类

class Element{
public uint Size;
public ulong BigThing;
}

然后我对这需要转换的事实感到羞愧:

int x=MyElement.Size;

同样

int x=5;
uint total=MyElement.Size+x;

为什么语言设计者决定使有符号和无符号整数类型不可隐式转换?为什么在整个 .Net 库中没有更多地使用无符号类型?例如 String.Length 永远不能为负数,但它是一个带符号的整数。

最佳答案

Why did the language designers decide to make the signed and unsigned integer types not implicitly castable?

因为这可能会丢失数据或抛出任何异常,隐含地允许这两者通常都不是一件好事。 (诚​​然,从 long 到 double 的隐式转换也可能丢失数据,但方式不同。)

And why are the unsigned types not used more throughout the .Net library

无符号类型不符合 CLS - 并非所有 .NET 语言始终支持它们。例如,Visual Basic 在 .NET 1.0 和 1.1 中没有对无符号数据类型的“ native ”支持;它被添加到 2.0 的语言中。 (您仍然可以使用它们,但它们不是语言本身的一部分 - 例如,您不能使用普通的算术运算符。)

关于c# - 为什么未签名的 CLR 类型很难在 C# 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3260000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com