【问题标题】:Why use ToString() to convert char type to string?为什么使用 ToString() 将 char 类型转换为字符串?
【发布时间】:2018-10-30 06:58:19
【问题描述】:

在 C# 中;我知道数字与符号不同......据我了解,字节转换为 int 是可能的,因为 int 类型可以读取所有字节二进制编译。但是,为什么不能以同样的方式将 char 类型轻松地转换为字符串呢?示例:

char c = 'a';
string asdf = c; <== why do I have to use a ToString-method here?

【问题讨论】:

  • 转换取决于你想要的编码(ASCII、UTF8、UTF16等)。
  • @Alexander 这个副本如何回答这个问题?
  • 这是可能的,但它不存在,因为 char 和 string 从根本上如此不同,以至于强调它们的差异更为重要。开发人员很容易混淆这两者......当我多年前第一次开始时,我认为它们是相同的,如果不是因为关注点的具体分离,以后可能会更加困惑。此外,字符串是不可变的,因此 = 会有一个重载,对于 = char 和其他类型也有完全不同的逻辑。
  • @Marker 否,charstring 在 .NET 中都是 UTF16。

标签: c# char


【解决方案1】:

好吧,因为同样的原因int不能转换成int[],这些是不同的类型,C#是一种强类型的编程语言。

其实char是数值类型,数值类型转换规则同样适用于char,所以可以转换为intlong,但不能隐式转换为string或以char[] 为例。

【讨论】:

  • @CamiloTerevinto 因为它不能,无论是明确的还是隐含的,谁告诉你它可以?
  • string t = "Item" + 1; 怎么样?很多事情都是可能的,并且已经提供了 munch 合成糖......
  • @TaW 注意string t = 1;是非法的。只有将字符串与其他字符串连接 (+) 才是合法的。
  • 我同意 Alex 的观点...从 (anything) 到 string 没有隐式转换。 string x = 1000 是非法的。 .NET 中唯一存在的语法糖是 + 运算符,它要求只有一个操作数是 string,另一个可以是任何东西(例如 5 + "x" == "5x", "x" + 5 == "x5"
  • 嗯,之前没有考虑过,但是您(@AlexSikilinda)认为 char 是数字类型是正确的。确实如此,现在我更明白了。因为我读到了将“数字”显式转换为字符: char c = (char)97; //返回一个“a”谢谢队友!但在我接受答案之前,我确实想听听更多人的意见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 2013-04-02
  • 1970-01-01
  • 2014-09-30
  • 2013-03-14
相关资源
最近更新 更多