2012年6月18日 星期一

C# ref/out 關鍵字 筆記


ref是傳遞參數的地址,out是返回值,兩者有一定的相同之處,不過也有不同點。

使用ref前必須對變量賦值,out不用。

out的函數會清空變量,即使變量已經賦值也不行,退出函數時所有out引用的變量都要賦值,ref引用的可以修改,也可以不修改。





以下摘錄自 MSDN Library:
以 ref 參數傳遞的引數必須先被初始化,out 則不需要。
out 參數要在離開目前的方法之前至少有一次指派值的動作。
若兩個方法僅有 ref、out 關鍵字的差異,在編譯期會視為相同方法簽章,無法定義為多載方法。





        private void Form1_Load(object sender, EventArgs e)
        {

            string name = "jan";


            Console.WriteLine("原 " + name);
            Console.WriteLine("改 " + fun1(ref name));
            Console.WriteLine("原 " + name);

            Console.WriteLine();

            Console.WriteLine("改 " + fun2(out name));
            Console.WriteLine("原 " + name);
        }//


        string fun2(out string _st)
        {
            _st = "";
            _st += "pan";
            return _st;
        }




        string fun1(ref string _st)
        {
            _st += "pan";
            return _st;
           
        }


        string fun1(string _st)
        {
            _st += "pan";
            return _st;
        }



0 意見:

張貼留言

 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template