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

C#交換兩個變量值的幾種方法總結(jié)

 更新時間:2022年10月22日 12:02:58   作者:Darren Ji  
這篇文章介紹了C#交換兩個變量值的幾種方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

在學習.Net/C#或者任何一門面向?qū)ο笳Z言的初期,大家都寫過交換兩個變量值,通常是通過臨時變量來實現(xiàn)。本篇使用多種方式實現(xiàn)兩個變量值的交換。

假設int x =1; int y = 2;現(xiàn)在交換兩個變量的值。

使用臨時變量實現(xiàn)

        static void Main(string[] args)
        {
            int x = 1;
            int y = 2;
            Console.WriteLine("x={0},y={1}",x, y);
            int temp = x;
            x = y;
            y = temp;
            Console.WriteLine("x={0},y={1}", x, y);
            Console.ReadKey();
        }

使用加減法實現(xiàn)

試想, 1+2=3,我們得到了兩數(shù)相加的結(jié)果3。3-2=1,把1賦值給y,y就等于1; 3-1=2,把2賦值給x,這就完成了交換。

        static void Main(string[] args)
        {
            int x = 1;
            int y = 2;
            Console.WriteLine("x={0},y={1}",x, y);
            x = x + y; //x = 3
            y = x - y; //y = 1
            x = x - y; //x = 2 
            Console.WriteLine("x={0},y={1}", x, y);
            Console.ReadKey();
        }

使用ref和泛型方法實現(xiàn)

如果把交換int類型變量值的算法封裝到方法中,需要用到ref關鍵字。

        static void Main(string[] args)
        {
            int x = 1;
            int y = 2;
            Console.WriteLine("x={0},y={1}",x, y);
            Swap(ref x, ref  y);
            Console.WriteLine("x={0},y={1}", x, y);
            Console.ReadKey();
        }
        static void Swap(ref int x, ref int y)
        {
            int temp = x;
            x = y;
            y = x;
        }

如果交換string類型的變量值,就要寫一個Swap方法的重載,讓其接收string類型:

        static void Main(string[] args)
        {
            string x = "hello";
            string y = "world";
            Console.WriteLine("x={0},y={1}",x, y);
            Swap(ref x, ref  y);
            Console.WriteLine("x={0},y={1}", x, y);
            Console.ReadKey();
        }
        static void Swap(ref int x, ref int y)
        {
            int temp = x;
            x = y;
            y = x;
        }
        static void Swap(ref string x, ref string y)
        {
            string temp = x;
            x = y;
            y = x;
        }

如果交換其它類型的變量值呢?我們很容易想到通過泛型方法來實現(xiàn),再寫一個泛型重載。

        static void Main(string[] args)
        {
            string x = "hello";
            string y = "world";
            Console.WriteLine("x={0},y={1}",x, y);
            Swap<string>(ref x, ref y);
            Console.WriteLine("x={0},y={1}", x, y);
            Console.ReadKey();
        }
        static void Swap(ref int x, ref int y)
        {
            int temp = x;
            x = y;
            y = x;
        }
        static void Swap(ref string x, ref string y)
        {
            string temp = x;
            x = y;
            y = x;
        }
        static void Swap<T>(ref T x, ref T y)
        {
            T temp = x;
            x = y;
            y = temp;
        }

使用按位異或運算符實現(xiàn)

對于二進制數(shù)字來說,當兩個數(shù)相異的時候就為1, 即0和1異或的結(jié)果是1, 0和0,以及1和1異或的結(jié)果是0。關于異或等位運算符的介紹在這里:http://m.fzitv.net/article/260847.htm

舉例,把十進制的3和4轉(zhuǎn)換成16位二進制分別是:

x = 0000000000000011;//對應十進制數(shù)字3
y = 0000000000000100; //對應十進制數(shù)字4

把x和y異或的結(jié)果賦值給x:x = x ^ y;
x = 0000000000000111;

把y和現(xiàn)在的x異或,結(jié)果賦值給y:y = y ^ x
y = 0000000000000011;

把現(xiàn)在的x和現(xiàn)在的y異或,結(jié)果賦值給x:x = x ^ y
x = 0000000000000100;

按照上面的算法,可以寫成如下:

        static void Main(string[] args)
        {
            int x = 1;
            int y = 2;
            Console.WriteLine("x={0},y={1}",x, y);
            x = x ^ y;
            y = y ^ x;
            x = x ^ y;
            Console.WriteLine("x={0},y={1}", x, y);
            Console.ReadKey();
        }

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

相關文章

  • c#中的擴展方法學習筆記

    c#中的擴展方法學習筆記

    擴展方法能夠向現(xiàn)有類型“添加”方法,而無需創(chuàng)建新的派生類型,重新編譯或以其他方式修改原始類型。下面這篇文章主要給大家介紹了關于c#中擴展方法學習的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-11-11
  • Unity實現(xiàn)物體跟隨鼠標移動

    Unity實現(xiàn)物體跟隨鼠標移動

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)物體跟隨鼠標移動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • FileShare枚舉的使用小結(jié)(文件讀寫鎖)

    FileShare枚舉的使用小結(jié)(文件讀寫鎖)

    其實/FileShare就是控制文件流的“訪問權(quán)限”,當然,這僅僅是入門的文件操作,自己做了筆記,也希望能給大家?guī)韼椭?/div> 2014-01-01
  • C# 設計模式系列教程-橋接模式

    C# 設計模式系列教程-橋接模式

    橋接模式降低了沿著兩個或多個維度擴展時的復雜度,防止類的過度膨脹,解除了兩個或多個維度之間的耦合,使它們沿著各自方向變化而不互相影響。
    2016-06-06
  • C#帶你玩掃雷(附源碼)

    C#帶你玩掃雷(附源碼)

    這篇文章主要介紹了C#帶你玩掃雷(附源碼),詳細的介紹實現(xiàn)掃雷的方法,具體一定的參考價值,有興趣的可以了解一下
    2017-10-10
  • C#獲取硬盤編號的方法

    C#獲取硬盤編號的方法

    這篇文章主要介紹了C#獲取硬盤編號的方法,涉及C#獲取硬件屬性的相關技巧,非常簡單實用,需要的朋友可以參考下
    2015-05-05
  • C#中實現(xiàn)深度優(yōu)先搜索

    C#中實現(xiàn)深度優(yōu)先搜索

    深度優(yōu)先搜索(DFS)是一種遍歷或搜索圖或樹的算法,廣泛應用于迷宮尋路、圖像處理、路徑規(guī)劃、模式識別、社交網(wǎng)絡分析等領域,學習DFS有助于理解圖結(jié)構(gòu),解決回溯問題,提升算法設計與分析能力,下面就來介紹一下
    2024-10-10
  • c# 如何實現(xiàn)圖片壓縮

    c# 如何實現(xiàn)圖片壓縮

    這篇文章主要介紹了c# 實現(xiàn)圖片壓縮的示例,幫助大家更好的理解和學習c#,感興趣的朋友可以了解下
    2020-11-11
  • c#中WinForm用OpencvSharp實現(xiàn)ROI區(qū)域提取的示例

    c#中WinForm用OpencvSharp實現(xiàn)ROI區(qū)域提取的示例

    已經(jīng)自學OpencvSharp一段時間了,現(xiàn)在就分享一下我的學習過程,本文主要介紹了c#中WinForm用OpencvSharp實現(xiàn)ROI區(qū)域提取的示例,具有一定的參考價值,感興趣的可以了解一下
    2022-05-05
  • C#實現(xiàn)查殺本地與遠程進程的方法

    C#實現(xiàn)查殺本地與遠程進程的方法

    這篇文章主要介紹了C#實現(xiàn)查殺本地與遠程進程的方法,可實現(xiàn)針對特定進程的關閉操作,是C#進程操作的一個典型應用,需要的朋友可以參考下
    2014-12-12

最新評論

赣州市| 望江县| 湘潭市| 广灵县| 故城县| 威海市| 平利县| 商丘市| 图们市| 邯郸县| 临沧市| 北流市| 疏附县| 本溪| 桃江县| 乌拉特后旗| 南陵县| 通辽市| 揭阳市| 北安市| 淮阳县| 台江县| 和林格尔县| 广平县| 中牟县| 青海省| 新乡县| 孙吴县| 牡丹江市| 吉首市| 黑水县| 道真| 安国市| 彭泽县| 莱州市| 都昌县| 通河县| 政和县| 开平市| 南溪县| 镇坪县|