最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#關(guān)鍵字in、out、ref的作用與區(qū)別

 更新時(shí)間:2022年04月18日 08:54:51   作者:農(nóng)碼一生  
這篇文章介紹了C#關(guān)鍵字in、out、ref的作用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

簡介:

In:過程不會改寫In的內(nèi)容 ,默認(rèn)的傳遞方式,即向函數(shù)內(nèi)部傳送值。
Out和out:傳入的值不會被過程所讀取,Out在傳入的時(shí)候,參數(shù)的數(shù)值會清空,但過程可以寫 。只出不進(jìn)
ref:可以把參數(shù)的數(shù)值傳遞進(jìn)函數(shù) ,過程會讀,會寫 。有進(jìn)有出。

一、In

In 關(guān)鍵字使參數(shù)按值傳遞。即向函數(shù)內(nèi)部傳送值。

例如:

using System;
class gump
{
    public double square(double x)
    {
        x=x*x;
        return x;
    }
}

class TestApp
{
    public static void Main()
    {
        gump doit=new gump();

        double a=3;
        double b=0;

        Console.WriteLine(\"Before square->a={0},b={1}\",a,b);//a=3,b=0;

            b=doit.square( a);
        Console.WriteLine(\"After square->a={0},b={1}\",a,b);//a=3,b=9;
    }
}

二、ref

ref 關(guān)鍵字使參數(shù)按引用傳遞。其效果是,當(dāng)控制權(quán)傳遞回調(diào)用方法時(shí),在方法中對參數(shù)的任何更改都將反映在該變量中。若要使用 ref 參數(shù),則方法定義和調(diào)用方法都必須顯式使用 ref 關(guān)鍵字。

例如:

using System;
class gump
{
    public double square(double x)
    {
        x=x*x;
        return x;
    }
}

class TestApp
{
    public static void Main()
    {
        gump doit=new gump();

        double a=3;
        double b=0;

        Console.WriteLine(\"Before square->a={0},b={1}\",a,b);//a=3,b=0;

            b=doit.square( ref a);
        Console.WriteLine(\"After square->a={0},b={1}\",a,b);//a=9,b=9;
    }
}

傳遞到 ref 參數(shù)的參數(shù)必須最先初始化。這與 out 不同,后者的參數(shù)在傳遞之前不需要顯式初始化。

三、out

out 關(guān)鍵字會導(dǎo)致參數(shù)通過引用來傳遞。這與 ref 關(guān)鍵字類似,不同之處在于 ref 要求變量必須在傳遞之前進(jìn)行初始化。若要使用 out 參數(shù),方法定義和調(diào)用方法都必須顯式使用out 關(guān)鍵字。

using System;
class gump
{
    public void math_routines(double x,out double half,out double squared,out double cubed)
//可以是:public void math_routines(ref double x,out double half,out double squared,out double cubed)
//但是,不可以這樣:public void math_routines(out double x,out double half,out double squared,
//out double cubed),對本例來說,因?yàn)檩敵龅闹狄縳賦值,所以x不能再為輸出值
    {
        half=x/2;
        squared=x*x;
        cubed=x*x*x;
    }
}

class TestApp
{
    public static void Main()
    {
        gump doit=new gump();

        double x1=600;
        double half1=0;
        double squared1=0;
        double cubed1=0;
        [Page]
        /*
        double x1=600;
        double half1;
        double squared1;
        double cubed1;
        */

        Console.WriteLine(\"Before method->x1={0}\",x1);
        Console.WriteLine(\"half1={0}\",half1);          Console.WriteLine(\"squared1={0}\",squared1);
        Console.WriteLine(\"cubed1={0}\",cubed1);



        doit.math_rountines(x1,out half1,out squared1,out cubed1);
  //此時(shí)的Out修飾的參數(shù)值均已經(jīng)發(fā)生改變。
            Console.WriteLine(\"After method->x1={0}\",x1);
            Console.WriteLine(\"half1={0}\",half1);
            Console.WriteLine(\"squared1={0}\",squared1);
            Console.WriteLine(\"cubed1={0}\",cubed1);
           
    }
}

盡管作為 out 參數(shù)傳遞的變量不必在傳遞之前進(jìn)行初始化,但需要調(diào)用方法以便在方法返回之前賦值。

class OutExample
{
    static void Method(out int i)
    {
        i = 44;
    }
 
    static void Main()
    {
        int value;
        Method(out value);
        // value is now 44
    }
}

四、區(qū)別:

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

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

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

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

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

以上所述是小編給大家介紹的C#關(guān)鍵字in、out、ref的作用與區(qū)別,希望對大家有所幫助。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • C#中使用Spire.XLS來操作Excel數(shù)據(jù)的實(shí)現(xiàn)

    C#中使用Spire.XLS來操作Excel數(shù)據(jù)的實(shí)現(xiàn)

    本文主要介紹了C#中使用Spire.XLS來操作Excel數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C#使用SqlDataAdapter對象獲取數(shù)據(jù)的方法

    C#使用SqlDataAdapter對象獲取數(shù)據(jù)的方法

    這篇文章主要介紹了C#使用SqlDataAdapter對象獲取數(shù)據(jù)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了SqlDataAdapter對象獲取數(shù)據(jù)具體步驟與相關(guān)使用技巧,需要的朋友可以參考下
    2016-02-02
  • C#實(shí)現(xiàn)Zip壓縮目錄中所有文件的方法

    C#實(shí)現(xiàn)Zip壓縮目錄中所有文件的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)Zip壓縮目錄中所有文件的方法,涉及C#針對文件的讀寫與zip壓縮相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#實(shí)現(xiàn)異步連接Sql Server數(shù)據(jù)庫的方法

    C#實(shí)現(xiàn)異步連接Sql Server數(shù)據(jù)庫的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)異步連接Sql Server數(shù)據(jù)庫的方法,涉及C#中await方法的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C# 前端無插件打印導(dǎo)出實(shí)現(xiàn)方式詳解

    C# 前端無插件打印導(dǎo)出實(shí)現(xiàn)方式詳解

    本文講述了使用C#實(shí)現(xiàn)前端無插件的打印和導(dǎo)出功能,介紹了相關(guān)技術(shù)和方法,適合需要在項(xiàng)目中實(shí)現(xiàn)相應(yīng)功能的開發(fā)者參考
    2024-10-10
  • c# 用Base64實(shí)現(xiàn)文件上傳

    c# 用Base64實(shí)現(xiàn)文件上傳

    這篇文章主要介紹了c# 用Base64實(shí)現(xiàn)文件上傳的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Unity3D使用Shader實(shí)現(xiàn)腐蝕消失

    Unity3D使用Shader實(shí)現(xiàn)腐蝕消失

    這篇文章主要為大家詳細(xì)介紹了Unity3D使用Shader實(shí)現(xiàn)腐蝕消失,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#將Excel中的數(shù)據(jù)轉(zhuǎn)換成DataSet

    C#將Excel中的數(shù)據(jù)轉(zhuǎn)換成DataSet

    這篇文章主要介紹了C#將Excel中的數(shù)據(jù)轉(zhuǎn)換成DataSet的方法,非常簡單實(shí)用,從本人項(xiàng)目中提取出來的,推薦給大家,希望對大家學(xué)習(xí)C#能夠有所幫助。
    2015-03-03
  • C#調(diào)用Matlab生成的dll方法的詳細(xì)說明

    C#調(diào)用Matlab生成的dll方法的詳細(xì)說明

    這篇文章詳細(xì)介紹了C#調(diào)用Matlab生成的dll方法,有需要的朋友可以參考一下
    2013-09-09
  • C#中如何生成安裝包

    C#中如何生成安裝包

    這篇文章主要介紹了C#中如何生成安裝包問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論

翁牛特旗| 贺州市| 广东省| 金坛市| 汾阳市| 阿鲁科尔沁旗| 敦煌市| 岑巩县| 清涧县| 柘城县| 扬州市| 厦门市| 利津县| 铜鼓县| 巨野县| 天峻县| 高阳县| 平和县| 涿鹿县| 杂多县| 福建省| 安新县| 灌云县| 荥阳市| 靖江市| 伊宁市| 葫芦岛市| 吉木乃县| 扬中市| 堆龙德庆县| 南京市| 浦江县| 镇安县| 根河市| 勃利县| 三江| 岳普湖县| 乌兰县| 新巴尔虎左旗| 沙河市| 竹山县|