我在某处读到,如果您的应用程序中有多个相同的字符串,则实际上只创建了一个,并且所有引用实际上都指向相同的字符串。
在阅读有关锁的信息时,我会看到有关此行为的警告。就像从不锁定字符串一样,因为应用程序中任何其他位置的任何其他锁定都可能锁定同一字符串。特别是如果您锁定:
string lockObj = "";
...
{
lock(lockObj){
...
}
}
因此,这使我回到了那里,只有一个特定字符串的单个副本。因此,如果我想比较两个字符串,有什么办法可以通过它们的存储位置来做到这一点?喜欢..
public bool areSame(string s1,string s2){
return &s1 == &s2;
}
谢谢您的帮助!
我在某处读到,如果您的应用程序中有多个相同的字符串,则实际上只创建了一个,并且所有引用实际上都指向相同的字符串。
那是不对的。尽管您可以按照每个唯一的字符串使用一个对象的方式来安排程序,但.NET不能保证。确实,C#编译器会将string
程序中由字符串文字产生的所有对象都指向同一个字符串对象。但是,创建string
具有相同内容的多个对象相当容易。
如果我想比较两个字符串,有什么办法可以通过它们的存储位置来做到这一点?
您可以Object.ReferenceEquals
为此使用方法:
public bool areSame(string s1,string s2){
return Object.ReferenceEquals(s1, s2);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句