C#中的ref与out参数(本文仅作为个人笔记)
假如一个方法的参数(形参)是引用类型,那么使用那个参数来进行的任何修改都会改变参数引用的数据。但这里的关键在于,虽然引用的数据发生了变化,但参数本生没有改变——它仍然引用的是一个对象。换句话说,虽然可以通过参数来修改实参引用的对象,但是不可能修改实参本身。这个时候就需要ref和out参数。
ref参数:实参中的ref参数必须先初始化,否则编译出错
using System.Text; namespace RefAndOutParam { class Program { static void TestRefParam(ref int refParam) { refParam++; } static void TestParam(int param) { param++; } static void Main(string[] args) { int test = 10; int testRef = 10; TestParam(test); TestRefParam(ref testRef); Console.WriteLine("The origin value is 10 ;No ref value {0}\t,ref value {1}",test,testRef); } } }
运行结果:
若程序希望传递未初始化的参数可以选择out参数。
out参数:必须对作为形参的out参数进行初始化操作,否则无法通过编译
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace RefAndOutParam { class OutParam { static void TestOutParam(out int outParam) { outParam = 1; } static void Main(string[] args) { int outParams; TestOutParam(out outParams); Console.WriteLine(outParams); } } }
输出结果:
转载请注明出处,谢谢