我想设置一个string s1
来引用另一个string s2
。我并不是说将s2
传递给带有ref的方法。 我希望只需要s1
与值和参考中的s2
相同。因此,Object.ReferenceEquals(s1,s2)将返回true。
我该怎么做?还有更好的方法吗?
答案 0 :(得分:0)
很简单。例子:
if (s1 == s2) s1 = s2; // If you need to verify their values are equal first.
s1 = s2; // If you don't need to verify first.
PS:你说“希望s1与s2相同”,所以这与上面相反。
您也可以使用String.Intern方法,但这会导致您的字符串与实习池中的任何其他字符串共享数据,该字符串恰好相同。在这两种情况下都可以节省内存。
答案 1 :(得分:-1)
我认为这不是Object.ReferenceEquals(s1,s2)
所做的。
此示例来自MSDN:
using System;
public class Example
{
public static void Main()
{
String s1 = "String1";
String s2 = "String1";
Console.WriteLine("s1 = s2: {0}", Object.ReferenceEquals(s1, s2));
Console.WriteLine("{0} interned: {1}", s1,
String.IsNullOrEmpty(String.IsInterned(s1)) ? "No" : "Yes");
String suffix = "A";
String s3 = "String" + suffix;
String s4 = "String" + suffix;
Console.WriteLine("s3 = s4: {0}", Object.ReferenceEquals(s3, s4));
Console.WriteLine("{0} interned: {1}", s3,
String.IsNullOrEmpty(String.IsInterned(s3)) ? "No" : "Yes");
}
}
// The example displays the following output:
// s1 = s2: True
// String1 interned: Yes
// s3 = s4: False
// StringA interned: No
s1和s2是不同的实例,但Object.ReferenceEquals(s1,s2)
返回true。这意味着在这种情况下它匹配值。