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的时候,可以不再方法外面赋值,但是必须在方法里面赋值
        }

 

 

posted on 2014-04-01 22:55  Fighting二零一四  阅读(127)  评论(0编辑  收藏  举报