在.NET中,char结构体的“--”运算符定义在哪里?

6
当我查看.NET Char结构的文档时(在此处:https://learn.microsoft.com/en-us/dotnet/api/system.char),我可以看到与.NET Framework中定义的任何其他类型相同的属性、方法等常规内容。
我知道char结构定义了--运算符,因为我可以执行以下操作:
char current = 'b';
current--;   // current now holds the value a.

当查看微软文档时,我期望能看到类似于以下的运算符重载定义:

public static Char operator --(char character)
{
}

问题在于我没有看到类似的内容,也没有说明哪个操作符被重载了。例如, 对于 char 类型,char 有一个 -- 操作符重载,但没有 - 操作符重载。我认为知道所有重载运算符的文档位置比进行试错更好。
所以我的问题是:如何知道哪种类型定义了哪种操作符?它是不是在 .NET API 文档的其他地方,我可能错过了吗?

我知道char结构体已经定义了"--"运算符,因为我可以这样做:是的,char实际上被实现为无符号数字类型。自从C语言以来就一直是这样。 - Powerlord
更具体地说,来自 System.Char 的文档:“Char 对象的值是其 16 位数字(序数)值。” - Powerlord
1
我认为你在C#文档中发现了一个漏洞,因为递减运算符仅提到整数和浮点数类型(注意:Char不会被递减转换为Int16)。https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/arithmetic-operators#decrement-operator--- - Paul Keister
嗨,@Powerlord,感谢您的评论,但我认为它可能不准确。您确实可以在char上使用+或-运算符,但在这种情况下,char会被隐式转换为int类型,因此它使用int类型的+或-运算符。对于--或++,char类型本身定义了运算符。 - Franno
1个回答

3
你需要查看C#语言规范,其中描述了你要寻找的内容。整数类型主题将char类型列为整数类型之一。

char类型表示无符号16位整数,其值介于0和65535之间。 char类型的可能值集对应于Unicode字符集。尽管char具有与ushort相同的表示形式,但不是所有允许在一个类型上的操作都允许在另一个类型上进行。

关于运算符,你需要查看C#语言规范中的前缀递增和递减运算符主题。

以下类型存在预定义的++和--运算符:sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal和任何枚举类型。


3
问题在当前的.NET在线文档中的这里 - char类型被遗漏了,显然是无意的。我已经提交了一个问题。 - Paul Keister
嗨 @AlesD,感谢您的回答。那么这些运算符是在语言级别而不是 .Net Framework 级别定义的,对吗?我对此感到困惑,因为可以在自定义的 .Net 类型上重载运算符,如此处所解释的:运算符重载 - Franno
1
是的,它们在语言层面上。正如您链接的运算符重载主题中所述,只有用户定义类型才能覆盖预定义运算符。 - Aleš Doganoc
感谢大家的帮助! - Franno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接