我不太理解在C#中
然而,在C#中,我创建了一个变量
这是否意味着在执行
ref
关键字的作用。在我的C++代码中,我创建了一个字符串变量以及一个指向它的指针和引用变量。我将它传递给Delete
或Change
函数,正如预期的那样,所有3个变量都被修改了。然而,在C#中,我创建了一个变量
x
并使用字符串数据对其进行初始化。我创建了一个变量y
,应该在幕后是x
的引用。然后,我使用ref
关键字将x
传递到Change
或Delete
方法中,导致方法内部的变量以及x
被修改。但是,即使y
应该像在C++中一样是x
的引用,它也没有被修改。这不仅仅是针对字符串的问题,因为我已经尝试过使用C#对象进行上述测试,并且得到了相同的结果。这是否意味着在执行
var y = x
时,y
通过值复制了x
?#include <iostream>
using namespace std;
void Delete(string &variable)
{
variable = "";
}
void Change(string &variable)
{
variable = "changed data";
}
void main()
{
string x = "data";
string *y = &x;
string &z = x;
Delete(x);
}
c#
namespace ConsoleApplication1
{
public class Program
{
public static void Main(string[] args)
{
var x = "data";
var y = x;
Change(ref x);
}
public static void Delete(ref string variable)
{
variable = null;
}
public static void Change(ref string variable)
{
variable = "changed";
}
}
}