params,out,ref的使用

params:

以數組的方式傳遞多個參數,在params前可以定義非params的參數,但其後不能再定義參數。

如:

    class Class2
    {
        Class1 class1;
        int nNum, nCount;
        //public Class2(int a ,params int[] pars, int b)                    //錯誤,不能再pars之後在定義參數,但可以再pars前定義參數,即a 

        public Class2(int a ,params int[] pars)                               // 正確
        {
            this.class1 = new Class1();
            foreach (int i in pars)
            {
                nNum = i;
            }
        }
    }

ref和out:

相同:都是引用傳值,即參數在被傳遞到另一個方法中發生變化後保持這種變化。

區別:

1.ref的變量在使用前需初始化,而out的變量在使用前可定義即可(也可初始化)

2.在調用的方法裏ref的變量可以不進行修改,而out的變量必須進行變更。

3.如果兩個方法唯一的區別是:一個接受 ref 參數,另一個接受 out 參數,則無法重載這兩個方法。

4.如果一個方法採用 refout 參數,而另一個方法不採用這兩類參數,則可以進行重載。

如:

strig

string surname = "t",                                         // srtname 在change方法中是ref的方式傳值,必須初始化

          fullname="  ";                                          // fullname在change方法中是out的方式傳值,可以初始化也可以只定義
this.change(ref surname, out fullname);

public void change(ref string refValue,out string  ouValue)
        {
            refValue = "tong";                                  //srtname 在change方法中是ref的方式傳值,可以對其變更,也可以不對其操作
            ouValue = "zhengwei";                         // fullname在change方法中是out的方式傳值,在調用的方法中必須對其進行變更和修改
        }

public void change(string refValue,out string  ouValue)              //因爲該方法參數與上個change方法不一致,沒有ref,所以可以重載

        {
            refValue = "tong";                                             

           ouValue = "zhengwei";                                

         }

public void change(out string refValue,out string  ouValue)              雖然該方法參數與第一個change方法不一致,即ref換成out,但是不可以重載,

        {
            refValue = "tong";                                             

           ouValue = "zhengwei";                                

         }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章