当使用==和!=运算符时,字符串对象的行为类似于Value类型,这意味着实际对象而不是引用被检查。字符串类型如何传递给方法或分配给C#中的变量?
怎么样参数传递,分配和复制?
字符串参数传递: 当引用类型传递给方法时,其引用被复制,但底层对象保持不变。
对于C#中的字符串类型,这也是真的吗?我的意思是会有2个指针(messageVar和messageParam)指向同一个对象在下面的代码:
public static void main()
{
string messageVar = "C#";
Test(messageVar);
// what about in assignement?
string messageVar2 = messageVar;
}
public void Test(string messageParam)
{
// logic
}
什么时候会被分配给一个变量?我猜测,引用只会被复制,而实际的对象在String Intern Pool中保持不变。不确定。
messageVar2也会引用同一个对象吗?
谢谢,
美观大方;使用字符串时,Object.Equals和Object.ReferenceEquals之间有什么区别? – 2012-02-11 17:52:08
对于字符串'Equals()'将测试*字符串相等*,而不管引用如何。无论两个字符串指向不同的对象实例,“foo”都等于“foo” – BrokenGlass 2012-02-11 17:56:09