您的位置:首页 > 编程语言 > C#

C# Ref参数引发的思考

2008-06-13 14:17 651 查看
先看代码:

using System;

using System.Collections.Generic;

using System.Text;

namespace testRef{

class testRef{

private static void ChgArrVal(int[] array){

for (int i = 0; i < array.Length; i++ )

array[i] = (int)Math.Pow(array[i], 2);

}

private static void ChgVal(int i) {

i = (int)Math.Pow(2, i);

}

private static void ChgValRef(ref int i) {

i = (int)Math.Pow(2, i);

}

static void Main(string[] args){

int[] arr = new int[] { 3, 4, 5, 6, 7, 8 };

int val = 5;

Console.WriteLine("original: "+ val);

ChgVal(val);

Console.WriteLine("ChgVal: "+ val);

Console.WriteLine("#####");

Console.WriteLine("original: "+ val);

ChgValRef(ref val);

Console.WriteLine("ChgValRef: "+ val);

Console.WriteLine("#####");

foreach(int a in arr)

Console.WriteLine(">>>" + a);

ChgArrVal(arr);

Console.WriteLine("#####");

foreach (int b in arr)

Console.WriteLine(">>>>" + b);

}

}

}

-------------------以下是运行结果:

Output:

original: 5

ChgVal: 5

#####

original: 5

ChgValRef: 32

#####

>>>3

>>>4

>>>5

>>>6

>>>7

>>>8

#####

>>>>9

>>>>16

>>>>25

>>>>36

>>>>49

>>>>64

続行するには何かキーを押してください . . .

###########################

你看出来了吗?本来Ref的本意是

The ref keyword causes arguments to be passed by reference.参数的引用传递,就是说引用过去,执行完了,不用返回值也能改变原变量的值.但是你看数组不用Ref就可以.可见数组的使用的时候,就是一个地址引用而已,并不是实际的操作,要不怎么不用Ref都可以改变呢?

呵呵,不知道对不对,自己觉得是这样吧.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: