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

C#中參數(shù)的傳遞方式詳解

 更新時間:2022年07月31日 11:56:18   作者:Darren Ji  
本文詳細講解了C#中參數(shù)的傳遞方式,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

值類型參數(shù)按值傳遞

    class Program 
    { 
        static void Main(string[] args) 
        { 
            int a = 10; 
            Add(a); 
            Console.WriteLine("傳遞之后的值為:" + a); 
            Console.ReadKey(); 
        }
 
        private static void Add(int i) 
        { 
            Console.WriteLine("傳遞之前的值為:" + i); 
            i = i + 10; 
           
        } 
    }

結(jié)果:

可見,值類型參數(shù)在被方法調(diào)用的時候,是對本身實例的拷貝和操作,在方法調(diào)用前后參數(shù)值不變。

引用類型參數(shù)按值傳遞

當引用類型參數(shù)傳遞時,是對托管堆上對象實例內(nèi)容的操作。
也就是引用類型按值傳遞,傳遞的是引用變量的指針,指向托管堆上的對象實例。

    class Program 
    { 
        static void Main(string[] args) 
        { 
            Student student = new Student(); 
            Add(student); 
            Console.WriteLine("參數(shù)傳遞之后的值為:" +student._score); 
            Console.ReadKey(); 
        }
 
 
        private static void Add(Student s) 
        { 
           Console.WriteLine("參數(shù)傳遞之前的值為:" + s._score); 
            s._score = 90; 
        } 
    }
 
    public class Student 
    { 
        public int _score = 80; 
    }

結(jié)果

可見,引用類型參數(shù)在被方法調(diào)用的時候,是針對變量的引用的操作,一旦引用對象內(nèi)容發(fā)生改變,原來變量的值也隨著改變。

按引用傳遞 ref和out

引用類型參數(shù)按值傳遞和按引用傳遞的不同之處:

  • 按值傳遞,傳遞的是參數(shù)本身的值,即引用指針。
  • 按引用傳遞,傳遞的是參數(shù)的地址,也就是實例指針。

另外,值類型也有按引用傳遞,這時候,傳遞的是值類型的地址。

   class Program 
    { 
        static void Main(string[] args) 
        { 
            int i = 100; 
            string str = "one"; 
            ChangeByValue(ref  i); 
            ChangeByRef(ref str); 
            Console.WriteLine(i); 
            Console.WriteLine(str);
 
            Console.ReadKey(); 
        }
 
        private static void ChangeByValue(ref int iValue) 
        { 
            iValue = 200; 
        }
 
        private static void ChangeByRef(ref string sValue) 
        { 
            sValue = "One more"; 
        } 
    }

可見,不管是值類型,還是引用類型,加入關(guān)鍵字ref作為參數(shù),就意味著是對參數(shù)地址的操作,即托管堆上實例地址的改變。

另外:

  • 如果需要按引用傳遞,方法的定義和方法的調(diào)用,都要顯式地使用ref和out。
  • 如果一個方法的參數(shù)除了ref和out關(guān)鍵字不同,還有其他參數(shù)不同,這才構(gòu)成方法的2個重載。如果僅僅ref和out關(guān)鍵字不同,會報錯"...不能僅在ref和out上有差別的重載方法"。

ref和out使用時的不同點:

out告訴編譯器,參數(shù)會在方法內(nèi)部初始化,而在方法之前不需要初始化。

int x;
Foo(out x);

ref告訴編譯器,參數(shù)在方法之前必須初始化。

int y = 0;
Foo(ref y);

特殊引用類型string的傳遞

    class Program 
    { 
        static void Main(string[] args) 
        { 
            string str = "Old String"; 
            Console.WriteLine("傳遞之前的值為:" + str); 
            ChangeStr(str); 
            Console.WriteLine("傳遞之后的值為:"+str); 
            Console.ReadKey(); 
        }
 
        private static void ChangeStr(string astr) 
        { 
            astr = "Change String"; 
        } 
    }

結(jié)果:

可見,雖然string是引用類型,但按值傳遞的表現(xiàn)和值類型按值傳遞的表現(xiàn)一樣。

總結(jié)

  • 引用類型按值傳遞,改變的是引用變量指向的托管堆上對象實例的內(nèi)容。
  • 引用類型按引用傳遞,改變的是引用變量指向的托管堆上對象實例的地址。

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • C#反射實現(xiàn)插件式開發(fā)的過程詳解

    C#反射實現(xiàn)插件式開發(fā)的過程詳解

    插件式架構(gòu),一種全新的、開放性的、高擴展性的架構(gòu)體系,插件式架構(gòu)設(shè)計好處很多,把擴展功能從框架中剝離出來,降低了框架的復(fù)雜度,讓框架更容易實現(xiàn),這篇文章主要介紹了C#反射實現(xiàn)插件式開發(fā),需要的朋友可以參考下
    2023-09-09
  • C#反色處理及其效率問題分析

    C#反色處理及其效率問題分析

    這篇文章主要介紹了C#反色處理及其效率問題分析,實例分析了C#反色處理問題的技巧及相關(guān)效率問題,需要的朋友可以參考下
    2015-06-06
  • 關(guān)于c#二叉樹的實現(xiàn)

    關(guān)于c#二叉樹的實現(xiàn)

    本篇文章小編為大家介紹,關(guān)于c#二叉樹的實現(xiàn)。需要的朋友參考下
    2013-04-04
  • Unity?Shader編輯器工具類ShaderUtil?常用函數(shù)和用法實例詳解

    Unity?Shader編輯器工具類ShaderUtil?常用函數(shù)和用法實例詳解

    Unity的Shader編輯器工具類ShaderUtil提供了一系列函數(shù),用于編譯、導(dǎo)入和管理著色器,這篇文章主要介紹了Unity?Shader編輯器工具類ShaderUtil?常用函數(shù)和用法,需要的朋友可以參考下
    2023-08-08
  • Unity3d實現(xiàn)無限循環(huán)滾動背景

    Unity3d實現(xiàn)無限循環(huán)滾動背景

    這篇文章主要為大家詳細介紹了Unity3d實現(xiàn)無限循環(huán)滾動背景,一個完整的商店廣告牌組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C# httpwebrequest訪問HTTPS錯誤處理方法

    C# httpwebrequest訪問HTTPS錯誤處理方法

    下面小編就為大家?guī)硪黄狢# httpwebrequest訪問HTTPS錯誤處理方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C#數(shù)組的常用操作方法小結(jié)

    C#數(shù)組的常用操作方法小結(jié)

    Array數(shù)組在C#中同樣是最基本的數(shù)據(jù)結(jié)構(gòu),下面為大家C#數(shù)組的常用操作方法小結(jié),皆為細小的代碼段,歡迎收看收藏
    2016-05-05
  • 使用C#與設(shè)備接口進行無縫通信的實現(xiàn)技巧

    使用C#與設(shè)備接口進行無縫通信的實現(xiàn)技巧

    隨著物聯(lián)網(wǎng)、智能設(shè)備和自動化技術(shù)的快速發(fā)展,越來越多的設(shè)備需要與計算機系統(tǒng)進行實時通信,而C#作為一門強大的編程語言,憑借其廣泛的庫支持和高效的開發(fā)效率,已成為與設(shè)備接口對接的理想選擇,在本篇文章中,我們將探討如何使用C#與設(shè)備進行無縫通信
    2025-01-01
  • c#批量上傳圖片到服務(wù)器示例分享

    c#批量上傳圖片到服務(wù)器示例分享

    這篇文章主要介紹了c#批量上傳圖片到服務(wù)器示例,服務(wù)器端需要設(shè)置圖片存儲的虛擬目錄,需要的朋友可以參考下
    2014-03-03
  • C#實現(xiàn)托盤程序并禁止多個應(yīng)用實例運行的方法

    C#實現(xiàn)托盤程序并禁止多個應(yīng)用實例運行的方法

    這篇文章主要介紹了C#實現(xiàn)托盤程序并禁止多個應(yīng)用實例運行的方法,涉及C#中NotifyIcon控件的使用及設(shè)置標志位控制程序只運行一個的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論

阿克苏市| 江北区| 长垣县| 泾源县| 安顺市| 晋中市| 山西省| 安新县| 葵青区| 大安市| 黔江区| 忻城县| 福安市| 马边| 澄城县| 长海县| 马公市| 昌吉市| 鄂伦春自治旗| 上高县| 古浪县| 崇信县| 富平县| 方山县| 本溪市| 顺昌县| 彭泽县| 吉木乃县| 凭祥市| 茌平县| 新野县| 阳信县| 瑞安市| 金坛市| 台南县| 乐亭县| 出国| 涪陵区| 庆安县| 六枝特区| 巨野县|