gpt4 book ai didi

c# - 在 C# 中,字符串类型如何传递给方法或分配给变量?

转载 作者:太空狗 更新时间:2023-10-29 23:17:07 26 4
gpt4 key购买 nike

当使用 == 和 != 运算符时,字符串对象的行为类似于值类型,这意味着检查的是实际对象而不是引用。

关于参数传递、赋值和复制呢?

字符串参数传递:将引用类型传递给方法时,会复制其引用,但底层对象保持不变。

C# 中的 String 类型也是如此吗?我的意思是在下面的代码中会有 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.ReferenceEquals() 轻松验证这一点测试两个 references 是否指向同一个对象实例 - 我稍微修改了您的示例以显示这一点:

static string messageVar = "C#";
public static void Main(string[] args)
{
bool isSame = Test(messageVar); //true

// what about in assignement?
string messageVar2 = messageVar;
isSame = Object.ReferenceEquals(messageVar2, messageVar);//also true
}

public static bool Test(string messageParam)
{
// logic
bool isSame = Object.ReferenceEquals(messageParam, messageVar);
return isSame;
}

关于c# - 在 C# 中,字符串类型如何传递给方法或分配给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9242070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com