为什么要加两个char
在 C# 中结果为int
type?
例如,当我这样做时:
var pr = 'R' + 'G' + 'B' + 'Y' + 'P';
the pr
变量变成int
类型。我希望它是一个string
类型值为"RGBYP"
.
为什么C#要这样设计呢?默认实现不是添加两个char
s 应该导致string
连接的char
s, not int
?
根据char 的文档 http://msdn.microsoft.com/en-us/library/x9h8tsay%28v=vs.110%29.aspx它可以隐式转换为整数值。这char
type 没有定义自定义operator +
因此使用整数 1。
Eric Lippert 在他的文章中的第一条评论中很好地解释了不隐式转换为字符串的基本原理。关于“为什么 char 隐式转换为 ushort 而反之则不然?”的博客文章 http://web.archive.org/web/20140414050135/http://blogs.msdn.com/b/ericlippert/archive/2009/10/01/why-does-char-convert-implicitly-to-ushort-but-not-vice-versa.aspx:
v1.0 中就考虑过这一点。 6月6日的语言设计笔记
1999 说“我们讨论了是否应该存在这样的转换,并且
认为提供第三种方法来做到这一点会很奇怪
转换。 [该语言]已经支持 c.ToString() 和 new
字符串(c)”。
(归功于JimmiTh https://stackoverflow.com/users/1169696/jimmith for 找到那句话 https://stackoverflow.com/questions/16851809/char-char-int-why#comment24303344_16851894)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)