请解释下面的代码发生了什么(// DOES NOT WORK部分) 我知道如果我宁愿使用Equals()而不是==运算符。但我在这里错过了一些理解。谢谢。与C#ArrayList中的项目(连接字符串)进行比较时,字符串比较不起作用
编辑:我的目标不是让它工作,而是想详细了解编译器/运行时级别发生了什么。
string first = "string1";
string full = first + " string2";
Debug.Assert(full == "string1 string2", "Expected to be same.");//WORKS
Debug.Assert(first + " string2" == "string1 string2", "Expected to be same.");//WORKS
var list = new ArrayList();
list.Add(full);
list.Add(first + " string2");
Debug.Assert(list[0] == "string1 string2", "Expected to be same.");//DOESN'T WORK
Debug.Assert(list[1] == "string1 string2", "Expected to be same.");//DOESN'T WORK
list.Add("string1 string2");
Debug.Assert(list[2] == "string1 string2", "Expected to be same.");//WORKS
为什么你甚至使用'ArrayList'?它只是在.NET框架中向后兼容.NET 1.1程序,不应在新开发中使用。 –
对!但这不是生产代码。我试图了解编译器/运行时级别正在发生的事情,只是一些随机场景。 –
只需将字符串存储在“对象”而不是“字符串”中即可重新创建相同的情况。 –