编译时的 C# 连接字符串

标签 c# .net string compiler-construction concatenation

请帮助理解这种行为。当我使用它时:

bool a1 = (object)("string" + 1) == ("string" + 1);

结果是false

但是当我用这个的时候

bool a2 = (object)("string" + "1") == ("string" + "1"); 

结果是true

那么,为什么 a1 != a2

最佳答案

转换为 object 会强制进行引用相等性比较。

在第一种情况下,在运行时会生成两个不同的 string 对象。由于它们是不同的实例,因此结果为假。

在第二种情况下,编译器注意到 "string"+ "1" 总是 "string1" 并保留字符串并在两个地方。由于是同一个字符串引用,所以结果为真。

关于编译时的 C# 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351869/

相关文章:

c# - Azure-DevOps 显示构建警告

c# - .net 中的高性能 TCP 客户端

c# - 在查询之前对 ObservableCollection 进行空检查

.net - MS Visual Studio .NET 的替代品

python - 为什么 str() 会向上舍入 float ?

string - 如何检查 MutableList 的元素或字符串输入是否为数字?

c++ - 如何将字符串放入整数数组c++

c# - EWS 交换有时不会使用 StreamingSubscription 触发 NewMail 事件

java - 无法从 Oracle 调用 dll

.net - 如果系统日期设置为 future ,为什么请求在 wp8 上会失败?