gpt4 book ai didi

c# - 字符串 = 字符串 + 整数 : What's behind the scenes?

转载 作者:IT王子 更新时间:2023-10-29 03:50:36 25 4
gpt4 key购买 nike

在 C# 中,您可以隐式连接一个字符串,比方说,一个整数:

string sth = "something" + 0;

我的问题是:

  1. 为什么,假设您可以隐式连接一个字符串和一个 int,C# 不允许像这样初始化字符串:

    string sth = 0; // Error: Cannot convert source type 'int' to target type 'string'
  2. C# 如何将 0 转换为字符串。是 0.ToString() 还是 (string)0 还是别的?

  3. 如何找到上一个问题的答案?

最佳答案

它编译为对 String.Concat(object, object) 的调用,像这样:

string sth = String.Concat("something", 0);

(请注意,这一行实际上会被编译器优化掉)

该方法定义如下:(摘自.Net Reference Source)

    public static String Concat(Object arg0, Object arg1) {
if (arg0==null) {
arg0 = String.Empty;
}

if (arg1==null) {
arg1 = String.Empty;
}
return Concat(arg0.ToString(), arg1.ToString());
}

(这调用 String.Concat(string, string))


要发现这一点,您可以使用 ildasm 或 Reflector(在 IL 或 C# 中,没有优化)查看 + 行编译成什么。

关于c# - 字符串 = 字符串 + 整数 : What's behind the scenes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3398604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com