public void DoSomething(object parameter)
{
parameter = new Object(); // original object from the callee would be unaffected.
}
public void DoSomething(ref object parameter)
{
parameter = new Object(); // original object would be a new object
}
記事を参照してください:Parameter Passing in C# by Jon Skeet
C#ではref
キーワードは、元のオブジェクトがref
キーワードを指定せずに、新しいオブジェクトまたはnullを割り当てることができ、その後に使用されている場合、参照型オブジェクトのアドレスは、値渡しされますそれは不可能です。
は、次の例を考えてみましょう:
class Program
{
static void Main(string[] args)
{
Object obj1 = new object();
obj1 = "Something";
DoSomething(obj1);
Console.WriteLine(obj1);
DoSomethingCreateNew(ref obj1);
Console.WriteLine(obj1);
DoSomethingAssignNull(ref obj1);
Console.WriteLine(obj1 == null);
Console.ReadLine();
}
public static void DoSomething(object parameter)
{
parameter = new Object(); // original object from the callee would be unaffected.
}
public static void DoSomethingCreateNew(ref object parameter)
{
parameter = new Object(); // original object would be a new object
}
public static void DoSomethingAssignNull(ref object parameter)
{
parameter = null; // original object would be a null
}
}
出力は次のようになります。
Something
System.Object
True
RTM:http://msdn.microsoft.com/en-us/library/14akc2c7.aspx –