c#中关键词out和ref的区别
c#中关键词out和ref用来表明以传引用的方式传递参数。
区别如下:
如果方法的参数用out标记,表示方法被调用前不需初始化参数,方法内不能读取此参数的值,在方法返回前必须向此参数写入值;
如果方法的参数用ref标记,表示方法被调用前必须初始化参数,在方法内部可以读取或者读写此参数,也可不对此参数做任何处理。
out事例:
class Program { static void Main(string[] args) { int val; //无需初始化 GetValue(out val); Console.WriteLine(val); } public static void GetValue(out int a) { a = 20; //必须赋值 } }
最后val的输出值为20
ref事例:
class Program { static void Main(string[] args) { int val=5; //必须初始化 GetValue(ref val); Console.WriteLine(val); } public static void GetValue(ref int a) { a += 20; //可以读写,也可不对此参数做任何处理 } }
最后val的输出值为25
注:上面的两个例子,我操作的都是的值类型,对于引用类型,一样可以使用out和ref关键词。