C# Programming Language (A. Hejlsberg, et. al, 2011 Fourth Edition, Annotated for 4.0) 第 7.10.7 节指出,“当两个单独的字符串实例包含完全相同的字符序列时,字符串的值相等,但参考不同。”
这曾经是运行时案例吗?.NET 运行时和 BCL 不会总是将两个相同的字符串实习到同一个参考框吗?
我知道这本书是在谈论“规范”,但下一个问题 - 是否有任何已知的 C# 实现以这种方式运行?
编辑
好的,真正困扰我的是:
String FirstOne = "StatusOK"
String MiddleOne = "StatusOK"
String LastOne = "StatusOK"
Integer FindMeOne(object AnythingtoFind) { return MsgLst.IndexOf(AnythingToFind) }
List<String> MsgLst;
MsgLst.Add(FirstOne);
MsgLst.Add(MiddleOne);
Msglst.Add(LastOne);
Integer foo = FindMeOne( LastOne );
我不希望 foo 是 1!我想我就是这么傻。
更新我所要做的就是得到我想要的:
public class MyNiceStringsThatICanFind
{
private String foobar;
}
但这又不好。如果对象通过 HashCode 跟踪自己,那么字符串有什么特别之处呢?为什么运行时不看你的 Objects 看看,嘿,也许它里面的东西完全一样,让我们让它成为相同的引用。