【发布时间】:2021-04-11 23:18:03
【问题描述】:
为什么将 C# 结果中的两个 char 添加到 int 类型?
例如,当我这样做时:
var pr = 'R' + 'G' + 'B' + 'Y' + 'P';
pr 变量变为int 类型。我希望它是 string 类型,值为 "RGBYP"。
为什么 C# 是这样设计的?添加两个chars 的默认实现不应该导致连接chars 的string,而不是int?
【问题讨论】:
-
有趣的是您实际上并没有添加
chars,因为C# 没有为该类型定义内置的+ 运算符。但是,char可以隐式转换为int,因此编译器在进行重载解析时会选择 + 运算符的int版本。当然,该运算符的结果是另一个int。 (注意说“当然”有点好笑,因为short+short实际上是int,而不是另一个short的“当然”回答!) -
继承自 C 的众多特性之一。
char在 C 中是一个整数类型,在 C# 中也是如此。没有很好的理由更改类型的行为(您可以使用其他功能轻松地从单个chars 创建字符串)会惹恼已经习惯 C/C++ 行为的用户。 -
在它的最基本级别中,char 不是 int 类型吗?
-
标题应该是:char + char = int? WAT?