麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C# out和ref區(qū)別

2019-11-17 03:13:12
字體:
供稿:網(wǎng)友

C# out和ref區(qū)別

Posted on 2014-04-18 19:30 第二次注冊 閱讀(...) 評論(...) 編輯 收藏

out與ref的區(qū)別總結(jié): 1.兩者都是通過引用來傳遞。 2.兩者都按地址傳遞的,使用后都將改變原來參數(shù)的數(shù)值。 3.屬性不是變量,因此不能作為 out或ref 參數(shù)傳遞。 4.若要使用 ref 或 out,方法定義和調(diào)用方法都必須顯式使用 out、ref 關(guān)鍵字。 5.rel可以把參數(shù)的數(shù)值傳遞進函數(shù),但是out是要把參數(shù)清空,就是說你無法把一個數(shù)值從out傳遞進去的,out進去后,參數(shù)的數(shù)值為空,所以你必須初始化一次。或者說,rel是有進有出,out是只出不進 6.盡管 ref 和 out 在運行時的處理方式不同,但在編譯時的處理方式相同。 —6-1.因此,如果一個方法采用 ref 參數(shù)(例:Method(ref int i)),而另一個方法采用 out 參數(shù)(例:Method(out int i)),則無法重載這兩個方法,因為從編譯的角度來看,以上兩個方法是完全相同的,因此將不會編譯方法內(nèi)的代碼 —6-2.但是,如果一個方法采用 ref 或 out 參數(shù)(例如:Method(ref/out int i))),而另一個方法不采用這兩個參數(shù)Method(int i)),則可以進行重載 7.實用場合:out適合用在需要retrun多個返回值的地方,而ref則用在需要被調(diào)用的方法修改調(diào)用者的引用的時候。

代碼如下:

 1         public static void Main(string[] args) 2         { 3             //使用out 4             Console.WriteLine("-----------------------------使用OUT的方法-----------------------------"); 5             Console.WriteLine("-----------------調(diào)用Out方法前參數(shù)沒賦值-----------------"); 6             string outName; 7             string outSchool; 8             int outGrad; 9             outMethod(out outName, out outGrad, out outSchool);10             Console.WriteLine("學(xué)生" + outName + "是:" + outSchool + outGrad + "級學(xué)生");11 12             Console.WriteLine("-----------------調(diào)用Out方法前參數(shù)賦值了-----------------");13             string outNameValue = "李XX";14             string outSchoolValue = "河南大學(xué)";15             int outGradValue = 2011;16             outMethod(out outNameValue, out outGradValue, out outSchoolValue);17             Console.WriteLine("學(xué)生" + outNameValue + "是:" + outSchoolValue + outGradValue + "級學(xué)生");18 19 20 21             //使用ref:22             Console.WriteLine("-----------------------------使用REF的方法-----------------------------");23             string refName = "李XX";24             string refSchool = "河南大學(xué)";25             int refGrad = 2011;26             Console.WriteLine("-----------------refMethod方法里沒賦值-----------------");27             refMethod(ref refName, ref refGrad, ref refSchool);28             Console.WriteLine("學(xué)生" + refName + "是:" + refSchool + refGrad + "級學(xué)生");29             Console.WriteLine("-----------------refMethod方法里賦值了-----------------");30             refMethodValue(ref refName, ref refGrad, ref refSchool);31             Console.WriteLine("學(xué)生" + refName + "是:" + refSchool + refGrad + "級學(xué)生");32 33             Console.ReadLine();34         }35 36 37 38         //outMethod39         //out方法輸出參數(shù)特征:40         //1.不在棧中為形參分配新的內(nèi)存。41         //2.形參的名稱相當于實參變量的別名,引用與實參相同的內(nèi)存位置。42         //3.既然形參和實參引用相同的內(nèi)存位置,則在方法執(zhí)行期間,形參所做的任何改變在方法完成之后通過實參變量都是可見的。43         PRivate static void outMethod(out string name, out int grad, out string school)44         {45             name = "王XX";46             grad = 2009;47             school = "鄭州大學(xué)";48         }49 50         //refMethod51         //ref方法輸出參數(shù)特征:52         //1.不在棧中為形參分配新的內(nèi)存。53         //2.形參的名稱相當于實參變量的別名,引用與實參相同的內(nèi)存位置。54         //3.既然形參和實參引用相同的內(nèi)存位置,則在方法執(zhí)行期間,形參所做的任何改變在方法完成之后通過實參變量都是可見的。55         private static void refMethod(ref string name, ref int grad, ref string school)56         {57 58         }59         private static void refMethodValue(ref string name, ref int grad, ref string school)60         {61             name = "王XX";62             grad = 2009;63             school = "鄭州大學(xué)";64         }

以上代碼的輸出結(jié)果:

由以上的輸出結(jié)果可以看出:

1、在調(diào)用方法outMethod之前變量賦值不賦值沒有任何意義,因為out是要把參數(shù)清空的,其參數(shù)賦值只要在方法內(nèi)部進行就可以了;即out是只出不進

2、在調(diào)用refMethod之前必須給變量賦值,然而在refMethod方法內(nèi)部參數(shù)賦值不賦值均可以,如方法內(nèi)部重新賦值了則修改其值,如方法內(nèi)部沒重新賦值則不修改其值;rel是有進有出,


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 真人一级毛片免费 | 久久久一区二区精品 | 亚洲小视频在线 | 国产精品色在线网站 | 久久久久久久久久久久久久av | 美女啪网站 | 一级精品| 免费一级毛片在线播放视频老 | 国产精品成人久久 | 2019中文字幕在线播放 | 一级国产航空美女毛片内谢 | 天堂亚洲一区 | 免费看毛片的网站 | qyl在线视频精品免费观看 | 成人mm视频在线观看 | 国产高潮好爽受不了了夜色 | 成人午夜免费看 | 91av久久 | 成人短视频在线观看免费 | 日本中文字幕网址 | 人与xxxxhdxxxhdxx| 一级在线观看 | 97干色| 欧美乱淫 | 日本aⅴ在线 | 亚洲综合视频网站 | 全免费午夜一级毛片真人 | 激情大乳女做爰办公室韩国 | 欧美 中文字幕 | 亚洲欧美国产精品va在线观看 | 国产毛片毛片 | 91短视频在线观看 | 麻豆小视频在线观看 | 国产精品久久99精品毛片三a | 成人不卡在线观看 | 黄色av网站在线观看 | 欧美伦交 | 国产精品成人av片免费看最爱 | 中文字幕亚洲视频 | 国产精品观看在线亚洲人成网 | 高清中文字幕在线 |