static void Main(string[] args)
{
int i = 0;
int[] ss={0,1,2,3};
So (ss,i );
Console.WriteLine (ss[0] );
Console.WriteLine(i); }
public static void So(int[] ss, int i)
{
ss[0]=1000;
i=1000;
}
谁教教我 为什么 调用后 i的值为0 而是不为1000啊??
{
int i = 0;
int[] ss={0,1,2,3};
So (ss,i );
Console.WriteLine (ss[0] );
Console.WriteLine(i); }
public static void So(int[] ss, int i)
{
ss[0]=1000;
i=1000;
}
谁教教我 为什么 调用后 i的值为0 而是不为1000啊??
int 类型是值型,你传过去的只是一个拷贝,所以原值不能被修改。
但是数组时引用类型,,
输出结果是:1000,0
你要想它改变就加个ref static void Main(string[] args)
{
int i = 0;
int[] ss={0,1,2,3};
So (ss,ref i );
Console.WriteLine (ss[0] );
Console.WriteLine(i); }
public static void So(int[] ss,ref int i)
{
ss[0]=1000;
i=1000;
}
ref在使用前,变量得赋值
out在使用变量前,不用赋值
如果是Array或者ArrayList、DataTable等类型,你这个写法就是正确的