i
当我将它传递给方法时为什么不改变?i
方法调用之后的值是0
,但方法仍然返回101
.
class Program
{
static void Main(string[] args)
{
int i = 0;
Console.WriteLine("Before static method running i={0}", i);
int c= SampleClass.ExampleMethod( i);
Console.WriteLine("i={0} - Static method return c={1}",i,c);
}
}
class SampleClass
{
public static int ExampleMethod(int i)
{
i= 101;
Console.WriteLine("Inside static method i={0}",i);
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
在C#中,值类型(int
s,double
s等,按值传递,而不是引用.)
要修改其值i
,必须使用ref
关键字.
class Program
{
static void Main(string[] args)
{
int i = 0;
int c= SampleClass.ExampleMethod(ref i);
Console.WriteLine("i={0} - c={1}",i,c);
}
}
class SampleClass
{
public static int ExampleMethod(ref int i)
{
i = 101;
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
通常,最好不要使用ref
,而是返回单个值.虽然在这种情况下,你的意图并不清楚,所以请继续使用.