【发布时间】:2014-11-15 09:06:55
【问题描述】:
public class Test
{
public string Name;
public void CallFunctionByObjectRef(Test a)
{
a.Name = "BCD";
a = null;
}
public void CallFunctionByObjectRefTORef(ref Test a)
{
a.Name = "BCD";
a = null;
}
}
class Program
{
static void Main(string[] args)
{
Test test = new Test();
test.Name = "ABC";
test.CallFunctionByObjectRef(test);
Test test1 = new Test();
test1.Name = "ABC";
test1.CallFunctionByObjectRefTORef(ref test1);
Console.WriteLine(test.Name);
Console.WriteLine(test1.Name);
Console.Read();
}
}
上面调用了两个函数(使用 ref 关键字,通过对象传递)。我从他们那里得到不同的输出。 但是默认情况下类对象通过引用传递,为什么我得到不同的输出。
【问题讨论】:
-
不。默认情况下,参数始终按值传递。问题是,对于引用类型,被复制和传递的值就是引用。
-
输出结果是什么?
-
这里有一篇关于该主题的精彩文章 - yoda.arachsys.com/csharp/parameters.html
-
@mdebeus:应该是
BCD,后跟System.NullReferenceException。 -
@Timothy - ABISHEK 仍应在问题中说明这一点。
标签: c#