真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ref與out-創(chuàng)新互聯(lián)

一.ref關(guān)鍵字使參數(shù)按引用傳遞。其效果是,當(dāng)控制權(quán)傳遞回調(diào)用方法時(shí),在方法中對(duì)參數(shù)所做的任何改變都將反

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、酉陽(yáng)土家族苗族網(wǎng)站維護(hù)、網(wǎng)站推廣。

映在該變量中。若要使用ref參數(shù),則方法定義和調(diào)用方法都必須顯式使用ref關(guān)鍵字。也即是說(shuō),在方法中對(duì)參數(shù)的

設(shè)置和改變將會(huì)直接影響函數(shù)調(diào)用之處。無(wú)論函數(shù)的定義還是調(diào)用時(shí)均不可忽略關(guān)鍵字ref。

代碼①:

        static void Main(string[] args)
        {
            int x = 10;
            int y = 20;
            M(ref x, ref y);
            Console.WriteLine("x = {0} , y = {1}" , x , y);
            Console.ReadLine();
        }
        static void M(ref int a , ref int b)
        {
            a = 521;
            b = 520; 
        }

代碼②:

        static void Main(string[] args)
        {
            int x = 10;
            int y = 20;
            M(ref x, ref y);
            Console.WriteLine("x = {0} , y = {1}" , x , y);
            Console.ReadLine();
        }
        static void M(ref int a , ref int b)
        {
            a = 1000;
            b = 1; 
        }

在此可以看出,在方法中對(duì)參數(shù)所做的任何更改都將反映在該變量中,而在main函數(shù)中對(duì)參數(shù)的賦值卻沒有起到作用

,這是不是說(shuō)明不需要進(jìn)行初始化呢?看下面一個(gè)例子。

代碼③:

        static void Main(string[] args)
        {
            int x ;
            int y ;
            M(ref x, ref y); //使用了未賦值的局部變量 x,y 。必須要初始化,否則編譯通不過(guò)
            Console.WriteLine("x = {0} , y = {1}" , x , y);
            Console.ReadLine();
        }
        static void M(ref int a , ref int b)
        {
            a = 521;
            b = 520; 
        }

二.這說(shuō)明,ref定義的參數(shù)在使用前必須初始化 , 無(wú)論在函數(shù)定義的時(shí)候參數(shù)有沒有賦予初始值。這條正好區(qū)分

out指定的參數(shù)可以不在調(diào)用函數(shù)的時(shí)候進(jìn)行初始化。

三.對(duì)out來(lái)說(shuō),第一條同樣適用。將代碼①以及②中的ref全部改成out,則可與使用ref得到同樣的結(jié)果。

四.out指定的參數(shù)必須在函數(shù)定義的時(shí)候就賦初始值。否則出現(xiàn)錯(cuò)誤。對(duì)比ref指定的參數(shù)則

可以不在函數(shù)內(nèi)部賦初始值,在函數(shù)調(diào)用的時(shí)候在函數(shù)調(diào)用的時(shí)候哦在賦值也可以。

        static void Main(string[] args)
        {
            int x = 10;
            int y  = 11;
            M(ref x, ref y); 
            Console.WriteLine("x = {0} , y = {1}" , x , y);
            Console.ReadLine();
        }
        static void M(ref int a , ref int b)
        {
            int temp;
            temp = a;
            a = b;
            b = temp;
        }

代碼④:

        static void Main(string[] args)
        {
            int x = 10;
            int y  = 11;
            M(out x, out y); 
            Console.WriteLine("x = {0} , y = {1}" , x , y);
            Console.ReadLine();
        }
        static void M(out int a , out int b)
        {
            int temp;
            temp = a;//使用了未賦值的out參數(shù),a在參數(shù)內(nèi)部沒有賦值,所以出錯(cuò)。
            a = b;//使用了未賦值的out參數(shù),b在參數(shù)內(nèi)部沒有賦值,所以出錯(cuò)。
            b = temp;
        }

總結(jié)以上四條得到ref和out使用時(shí)的區(qū)別是:

①.ref指定的參數(shù)(例子中的a,b)在函數(shù)調(diào)用時(shí)必須初始化不能為空的引用(x,y)。而指定的參數(shù)在函數(shù)調(diào)用時(shí)可以

不初始化(

        static void M(ref int a , ref int b)
        {
            int temp;
            temp = a;
            a = b;
            b = temp;
        }

  )。

②.out指定的參數(shù)在進(jìn)入函數(shù)時(shí)會(huì)清空自己,必須在函數(shù)內(nèi)部賦初始值。而ref指定的參數(shù)不需要。

        static void Main(string[] args)
        {
            int x ;
            int y ;
            M(out x, out y); 
            Console.WriteLine("x = {0} , y = {1}" , x , y);
            Console.ReadLine();
        }
        static void M(out int a, out int b)
        {
            a = 1111;
            b = 22222;
        }

用ref時(shí),例子中的x,y必須初始化值,a,b隨便;用out時(shí),M()方法中的參數(shù)a,b必須在M()方法內(nèi)部初始化值,x,y隨便。

===========================================================================================

ref和out的區(qū)別在C# 中,既可以通過(guò)值也可以通過(guò)引用傳遞參數(shù)。通過(guò)引用傳遞參數(shù)允許函數(shù)成員更改參數(shù)的值,并保持該更改。若要通過(guò)引用傳遞參數(shù), 可使用ref或out關(guān)鍵字。ref和out這兩個(gè)關(guān)鍵字都能夠提供相似的功效,

其作用也很像C中的指針變量。它們的區(qū)別是:

1、使用ref型參數(shù)時(shí),傳入的參數(shù)必須先被初始化。對(duì)out而言,必須在方法中對(duì)其完成初始化。

2、使用ref和out時(shí),在方法的參數(shù)和執(zhí)行方法時(shí),都要加Ref或Out關(guān)鍵字。以滿足匹配。

3、out適合用在需要retrun多個(gè)返回值的地方,而ref則用在需要被調(diào)用的方法修改調(diào)用者的引用的時(shí)候。

out方法參數(shù)上的 out 方法參數(shù)關(guān)鍵字使方法引用傳遞到方法的同一個(gè)變量。當(dāng)控制傳遞回調(diào)用方法時(shí),在方法中對(duì)參數(shù)所做的任何更改都將反映在該變量中。

當(dāng)希望方法返回多個(gè)值時(shí),聲明 out 方法非常有用。使用 out 參數(shù)的方法仍然可以返回一個(gè)值。一個(gè)方法可以有一個(gè)以上的 out 參數(shù)。

若要使用out參數(shù),必須將參數(shù)作為 out 參數(shù)顯式傳遞到方法。out 參數(shù)的值不會(huì)傳遞到 out 參數(shù)。

不必初始化作為out參數(shù)傳遞的變量。然而,必須在方法返回之前為 out 參數(shù)賦值。

屬性不是變量,不能作為out參數(shù)傳遞。

ref是有進(jìn)有出,而out是只出不進(jìn)。

=======================================================================================

函數(shù)參數(shù)默認(rèn)是值傳遞的,也就是“復(fù)制一份”。

out和ref傳遞的都是引用而不是值,out側(cè)重于輸出使用之前不需賦值而ref在使用之前需要賦值,另外這兩個(gè)關(guān)鍵字可以變相實(shí)現(xiàn)使一個(gè)方法輸出多個(gè)值。

1.寫一個(gè)方法,實(shí)現(xiàn)MyTryParse的功能

   bool MyTryParse(string s,out intresult)

   用戶只能輸入0到100之間的數(shù)寫一個(gè)方法,否則提示超出范圍

   返回值表示解析是否成功,result代表解析后的整型值

1.形參和實(shí)參指向同一地址

2.始終保證形參和實(shí)參指向同一地址

ref和out不一樣:

ref在實(shí)參傳入時(shí)保留其值 而out消除其值

方法編寫的時(shí)候的選擇:

若方法只有一個(gè)返回值 選擇使用返回值類型

例:

public static int ReturnInt()
{
         return 1;
}

如果返回值多于1個(gè) 選擇使用out

public static void ReturnInt(out int a,out int b)
{
           //a、b賦初值
           // a、b參與運(yùn)算
}

調(diào)用時(shí): int c;int d;  ReturnInt(out c,out d);

如果需要直接將結(jié)果返回到某一個(gè)變量上 使用ref

public static void ChangeString(ref String s)
{
                 s= "000"+s;
}

調(diào)用時(shí): String ss = "1"; ChangeString(ref ss);

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前題目:ref與out-創(chuàng)新互聯(lián)
URL標(biāo)題:http://weahome.cn/article/ddgeoc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部