来自大神:Hauk的对话
引用类型按值传递:
class Program
{
static void Main(string[] args)
{
MyTest mt = new MyTest();
//引用类型按值传递,传递的是该引用所指向的对象。
Func(mt);
//可以改变其值(因为是同一对象),但不能让引用指向新的对象(因为没有传递mt的引用过去)
Console.WriteLine(mt.Name);//结果输出:张三
}
static void Func(MyTest test)
{
test.Name = "张三";
test = new MyTest();
test.Name = "李四";
}
}
class MyTest
{
public string Name;
}
引用类型按引用递:
class Program
{
static void Main(string[] args)
{
MyTest mt = new MyTest();
//引用类型按引用递,传递对象引用
Func(ref mt);
//因为引用都过去了,可以重新指向新对象,也可以改变引用所指向对象的值
Console.WriteLine(mt.Name);//结果输出:李四
}
static void Func(ref MyTest test)
{
test.Name = "张三";
test = new MyTest();
test.Name = "李四";
}
}
class MyTest
{
public string Name;
}