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

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

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

在學(xué)習(xí).Net/C#或者任何一門(mén)面向?qū)ο笳Z(yǔ)言的初期,大家都寫(xiě)過(guò)交換兩個(gè)變量值,通常是通過(guò)臨時(shí)變量來(lái)實(shí)現(xiàn)。本篇使用多種方式實(shí)現(xiàn)兩個(gè)變量值的交換。

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

使用臨時(shí)變量實(shí)現(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();
        }

使用加減法實(shí)現(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和泛型方法實(shí)現(xiàn)

如果把交換int類(lèi)型變量值的算法封裝到方法中,需要用到ref關(guān)鍵字。

        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類(lèi)型的變量值,就要寫(xiě)一個(gè)Swap方法的重載,讓其接收string類(lèi)型:

        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;
        }

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

        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;
        }

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

對(duì)于二進(jìn)制數(shù)字來(lái)說(shuō),當(dāng)兩個(gè)數(shù)相異的時(shí)候就為1, 即0和1異或的結(jié)果是1, 0和0,以及1和1異或的結(jié)果是0。關(guān)于異或等位運(yùn)算符的介紹在這里:http://www.fzitv.net/article/260847.htm

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

x = 0000000000000011;//對(duì)應(yīng)十進(jìn)制數(shù)字3
y = 0000000000000100; //對(duì)應(yīng)十進(jìn)制數(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;

按照上面的算法,可以寫(xiě)成如下:

        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();
        }

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

相關(guān)文章

  • c#中的擴(kuò)展方法學(xué)習(xí)筆記

    c#中的擴(kuò)展方法學(xué)習(xí)筆記

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

    Unity實(shí)現(xiàn)物體跟隨鼠標(biāo)移動(dòng)

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

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

    其實(shí)/FileShare就是控制文件流的“訪(fǎng)問(wèn)權(quán)限”,當(dāng)然,這僅僅是入門(mén)的文件操作,自己做了筆記,也希望能給大家?guī)?lái)幫助
    2014-01-01
  • C# 設(shè)計(jì)模式系列教程-橋接模式

    C# 設(shè)計(jì)模式系列教程-橋接模式

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

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

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

    C#獲取硬盤(pán)編號(hào)的方法

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

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

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

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

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

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

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

    C#實(shí)現(xiàn)查殺本地與遠(yuǎn)程進(jìn)程的方法

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

最新評(píng)論

石河子市| 昌邑市| 嘉定区| 襄垣县| 佛山市| 三原县| 武强县| 西乌| 工布江达县| 华宁县| 屏南县| 沾益县| 大田县| 三台县| 山阴县| 威信县| 扬中市| 增城市| 文成县| 城固县| 丘北县| 嘉善县| 布尔津县| 邹平县| 雷波县| 桑日县| 玉龙| 陇南市| 赞皇县| 江川县| 苏尼特左旗| 区。| 双江| 遵化市| 山东| 嫩江县| 荃湾区| 临邑县| 驻马店市| 育儿| 和平区|