【发布时间】:2013-01-26 10:52:25
【问题描述】:
只是出于好奇...
我发现使用 Char 类型会产生令人讨厌的副作用,所以我想知道为什么设计师选择了类似的行为。 由于隐式转换,以下是有效的:
int x = 'A';
但是,以下内容让我有点困惑,因为容易导致误解:
int y = 'P' + 'Q';
既然一个字符串是由字符组成的,而字符串的“总和”产生另一个字符串,为什么字符的“总和”应该给出不同的东西?
另一个更糟的:
string s1 = 'H' + "ello"; //yields "Hello"
string s2 = 'H' + 'e' + "llo"; //yields "173llo"
所有这一切都是因为隐式转换。 我想知道这样做有什么好处,而不是强迫用户明确地将字符“转换”为整数(反之亦然)。
也许是我的失明,但我看到的弊大于利。
顺便说一句,已经有一个与该主题相关的问题,但似乎没有给出正当理由,除了“他们决定如此”或“还不错”。
非常感谢您。
【问题讨论】:
-
再读一遍:stackoverflow.com/a/1504959/284240 from "为什么存在从 char 到 int 的隐式转换?"
-
好吧,如果你对answer from Eric Lippert不满意,那么......
-
这只是一个糟糕的设计决定。 IMO 它应该是一个明确的转换。重载
char + int -> char和char - char -> int可以很好地解决将char视为数字的常见情况,而不会引入这些问题。 -
@Tim:我读过,但仍然找不到我上面显示的误导性表达的正当理由。你能告诉我一些“巨大”好处的例子吗?
标签: c# .net casting char implicit-conversion