永发信息网

C# 传递 传值(by value),数组参数(by array)区别

答案:5  悬赏:30  手机版
解决时间 2021-04-14 15:18
static void Main(string[] args)
{
int a = 10;
F(a);
Console.WriteLine(a);
D(ref a);
Console.WriteLine(a);

int[] Array = { 1, 2, 3 };
G1(Array);
for (int i = 0; i < Array.Length; i++)
{
Console.Write("{0} ", Array[i]);
}
Console.WriteLine();
G2(ref Array);
for (int i = 0; i < Array.Length; i++)
{
Console.Write("{0} ", Array[i]);
}
}
public static void F(int x)
{
x = x * x;
}
public static void D(ref int x)
{
x = x * x;
}

public static void G1(int[] array)
{
for (int i = 0; i < array.Length; i++)
{
array[i] *= 2;
}
}
public static void G2(ref int[] array)
{
for (int i = 0; i < array.Length; i++)
{
array[i] *= 2;
}
}
}

运行结果是
10
100
2 4 6
4 8 12
??????不加ref 时 为什么传值不对源地址数改变,而传数组发生了改变呢?
最佳答案
不加ref 时 为什么传值不对源地址数改变,而传数组发生了改变呢?

传值:复制一个新值传递到函数,无论新值怎么改,原来的值永远不会变。
传引用:把原来的值的地址传递到函数,就是在原来的值上直接更改。
全部回答
引用的引用当然有意义了。看下下面的代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { public class Welcome1 { public static void Main(string[] args) { int[] secondArray = { 1, 2, 3 }; int[] secondArrayCopy = secondArray; SecondDouble(ref secondArray); for(int i = 0; i< secondArray.Length; i++) Console.Write("{0} ",secondArray[i]); if(secondArray == secondArrayCopy) Console.WriteLine("\n\nsame"); else Console.WriteLine("\n\ndifferent"); Console.ReadLine(); } public static void SecondDouble(ref int[] Array) { for( int i = 0; i < Array.Length; i++) Array[i] *= 2; Array = new int[] {11,12,13}; } } } 跑出的结果SecondArray和SecondArrayCopy不再是同一个数组了,说明ref传递的变量可以在被调用方法中修改,即他控制的是引用本身,可以将调用者的原引用换成不同的对象,甚至能换成null。 跑完这个之后,你再把代码中的ref去掉,对比下结果,就明白了。去掉ref之后,SecondArray和SecondArrayCopy还是一样的。
啊实打实 再看看别人怎么说的。
int a 是值类型,ref int 是引用类型 int[] 、 ref int[] 都 是引用类型,
当参数传递类型为值类型时,原参数被复制后传入,相当于2个值相同的对象,但引用不同(内存地址不同)不会因为被传入到某方法后处理而改变 ref 是将值类型对象的引用传入,相当于对1个对象进行操作,所以会改变 而对于引用类型的对象当参数专递时,传递的是引用,即指针,所以原值会改变。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
20日DNF维护吗,连个公告也没有!!!
夸蛋糕好吃的句子,求关于坚果的情话,最好是
结算资料是不是必须原件 有没有相关规定
CERTINA地址在什么地方,想过去办事
word中可以打印出网格线吗,怎么设置啊
我是学生,想要办0月租的移动手机卡,请问手
里约奥运会运动员尿检为阳性 有什么处罚
八字销售口号大全霸气,足球队口号
求2010年的周历矢量图或者PSD格式的 急!!!
以下事例没有利用大气压作用的是A.用吸管吸饮
请问那里有洋画卖?
我问从唐山到大连t3676点零八的火车有没有没
DNF『狂战』
QQ会员LV1能加多少个好友?
乐山市体育中心-门球健身长廊这个地址在什么
推荐资讯
被一个人冷落的句子是,有哪些诗句是写自信的
香港户口 可以在大陆担任教师以及其他公职吗
开标的时候抽取的浮动率a和权重b有什么用呢
请各位帮忙分析一下600819耀皮玻璃,为什么会
单选题近代中华文化衰微的原因有①中国封建统
瑞虎3加油转速到两千转挫车,谁知道什么问题
刻录完了,显示刻录失败,可是打开却看到了
那位高手帮忙推荐一下本本:1.价位在4500-500
亿万逐爱 百度云
周杰伦的什么歌好听?
哪里有卖夹核桃的那夹具的阿?
记叙文记叙顺序有哪些,记叙顺序有哪些?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?