ref : 传递前必须初始化,out:不必初始化,就算初始化,也会被无视,out 作为输出参数,可以解决函数只有一个返回值的问题,
ref ,out 其实都可以说是引用传递,区别于值传递。引用传递 的时候 调用函数对参数的修改会反映到原来的传入的参数上,但值传递则不会改变。传递的只是原来变量的 副本。
下面来看代码
static void Main(string[] args) { // bool isOk= Int.TryParse("字符串",out+int类型的参数); Console.WriteLine("请输入一个数字"); string str = Console.ReadLine(); int number =10; bool isOk = Change(str, out number); Console.WriteLine("转换结果{0}",isOk); Console.WriteLine("转换后的结果是{0}",number); Console.ReadKey(); } public static bool Change(string str, out int number) { bool isOk = true; try { number = Convert.ToInt32(str); } catch { isOk = false; number = 0; } return isOk; } out和ref都可以用来传参数 但是有不同的地方的 ref的使用方法 static void Main(string[] args) { double salary=5000;//在使用out参数的时候,方法外面可以不赋值 JiangJin(ref salary);//在使用ref参数的时候,方法外面必须要赋值。 Console.WriteLine(salary); Console.ReadKey(); } public static void JiangJin( ref double s) { //s = 5000;//使用out参数的时候,方法里面必须要赋值 s += 500; } out的使用方法 static void Main(string[] args) { double salary; JiangJin( out salary); Console.WriteLine(salary); Console.ReadKey(); //再使用ref的时候,可以不在方法里面赋值,但是方法外面必须赋值 //在使用out的时候,可以不再方法外面赋值,但是必须在方法里面赋值 }