官术网_书友最值得收藏!

2.3 運(yùn)算符的應(yīng)用

運(yùn)算符就是執(zhí)行某項(xiàng)操作的一個(gè)標(biāo)識(shí)符,例如執(zhí)行相加用“+”。C#提供了大量運(yùn)算符,這些運(yùn)算符是指定在表達(dá)式中執(zhí)行哪些操作的符號(hào)。通常允許對枚舉進(jìn)行整型運(yùn)算,例如==、!=、<、>、<=、>=、binary+、binary-、^、&、|、~、++、--和sizeof()。此外,很多運(yùn)算符可被用戶重載,由此在應(yīng)用到用戶定義的類型時(shí)更改這些運(yùn)算符的含義。如表2.3列出了按優(yōu)先級(jí)的順序進(jìn)行分組的C#運(yùn)算符。每個(gè)組中的運(yùn)算符具有相同的優(yōu)先級(jí)。

表2.3 C#運(yùn)算符

2.3.1 算術(shù)運(yùn)算符

在C#中,算術(shù)運(yùn)算符就是一些具有運(yùn)算功能的符號(hào)。和數(shù)學(xué)中運(yùn)用的一樣,C#語言算術(shù)運(yùn)算符包括+(加)、-(減)、*(乘)、/(除)、%(取余)。算術(shù)運(yùn)算符用在數(shù)學(xué)表達(dá)式中,其用法和功能與數(shù)學(xué)中一樣。

C#為數(shù)值和字符類型定義了二元運(yùn)算符“+”,它可用于計(jì)算兩個(gè)數(shù)值類型操作數(shù)的和,也可用于字符串的串聯(lián)。下面來演示如何使用“+”運(yùn)算符。

注意:二元運(yùn)算符“+”用于數(shù)據(jù)值的和的計(jì)算,也可以用于字符串的串聯(lián),當(dāng)用于字符串串聯(lián)時(shí),操作數(shù)必須為字符型。

范例2-6】二元運(yùn)算符“+”的使用,這里有兩種功能,即作為數(shù)值計(jì)算和字符串聯(lián),如示例代碼2-6所示。

示例代碼2-6

        01  using System;                      //包含基本類和基類
        02   ……                               //還有其他命名空間,也是系統(tǒng)生成的,在此省略
        03  namespace Ex_2_6                   //程序的命名空間,也是項(xiàng)目名稱,如Ex_2_6
        04  {
        05     class Program
        06     {
        07         static void Main(string[] args)  //主函數(shù),也是入口函數(shù)
        08         {
        09            Console.WriteLine(10 + 10);   //這里的“+”號(hào)作為計(jì)算數(shù)值用
        10            Console.WriteLine("10" + "10");   //這里的“+”號(hào)作為字符串相加用
        11            Console.ReadLine();               //獲取輸入,為了控制臺(tái)窗口停下來,看輸
                                                        //出結(jié)果
        12         }
        13     }
        14  }

【運(yùn)行結(jié)果】選擇“調(diào)試”|“啟動(dòng)調(diào)試”選項(xiàng)運(yùn)行程序,結(jié)果如圖2.9所示。

圖2.9 “+”運(yùn)算符的使用

【代碼解析】在本例中,演示了“+”運(yùn)算符的兩種常用功能。在第09行示例代碼中,運(yùn)算符“+”用于計(jì)算兩個(gè)數(shù)值型操作數(shù)的和。而在第10行代碼中,運(yùn)算符“+”用于兩個(gè)字符串的串聯(lián)。

2.3.2 賦值運(yùn)算符

賦值就是將某一數(shù)值賦給某個(gè)變量的過程,賦值運(yùn)算符有=、+=、-=、*=、/=、%=、&=、|=、^=、>>=、<<=、??。其中,“??”是一種很特殊的運(yùn)算符,它的功能是如果“??”運(yùn)算符的左操作數(shù)非空,則返回左操作數(shù),否則返回右操作數(shù)。就好比有一件事情要辦,準(zhǔn)備了兩種方案,如果第一種方案不能運(yùn)行,那就運(yùn)行第二種方案。下面來演示如何使用“??”運(yùn)算符。

注意:初學(xué)者容易把“=”當(dāng)做等號(hào),在C#中等號(hào)是用“= =”來表示的。

范例2-7】在本例中,演示運(yùn)算符“??”的使用。用它檢查左操作數(shù)是否為空,如示例代碼2-7所示。

示例代碼2-7

        01  using System;                      //包含基本類和基類
        02   ……                               //還有其他命名空間,也是系統(tǒng)生成的,在此省略
        03  namespace Ex_2_7                       //程序的命名空間,也是項(xiàng)目名稱,如Ex_2_7
        04  {
        05     class Program
        06     {
        07         static void Main(string[] args)  //主函數(shù),也是入口函數(shù)
        08         {
        09            string i = null;      //聲明一個(gè)空的字符型變量i
        10            string j = "10" ?? i;//聲明字符型變量j,用“??”檢查它的左操作數(shù)是否為空
        11            Console.WriteLine(j);//由于“??”的左操作數(shù)據(jù)非空,所以將字符10賦給了j
        12            Console.ReadLine();   //獲取輸入焦點(diǎn),為了查看運(yùn)行結(jié)果
        13         }
        14     }
        15  }

【運(yùn)行結(jié)果】選擇“調(diào)試”|“啟動(dòng)調(diào)試”選項(xiàng)運(yùn)行程序,結(jié)果如圖2.10所示。

圖2.10 “??”運(yùn)算符的使用

【代碼解析】在第09行代碼中,將空值賦給string型變量i。而第10行代碼中,運(yùn)算符“??”用于檢查左邊和右邊的操作數(shù)是否為空。如果左邊的操作數(shù)不為空,則返回左邊的操作數(shù),否則返回右邊的操作數(shù)。

注意:“??”運(yùn)算符不能用于int型的操作,所以不要因?yàn)樵谑纠a2-7第10行代碼中看到“10”就認(rèn)為那是一個(gè)整數(shù)型的。

2.3.3 其他常用運(yùn)算符

其他特殊運(yùn)算符還包括++(自增)、--(自減)、?:、new、typeof。其中,“++”、“--”和“new”用得很多。“++”常用在變量自動(dòng)增加值的問題中。同樣,“--”常用在變量自動(dòng)減少值的問題中。而“new”常用來實(shí)例化。所謂實(shí)例化,就是將一個(gè)概念中的事物具體化。例如有人這個(gè)概念,用“new”就可以從人這個(gè)概念中實(shí)例化一個(gè)活生生的人出來。

三目運(yùn)算符“?:”是根據(jù)布爾表達(dá)式的值返回兩個(gè)值中的一個(gè)。如果條件為真,則返回第一個(gè)值,否則返回第二個(gè)值。如a/b=1?true:false;如果a/b=1為真,則返回true,否則返回false。三目運(yùn)算符常用在根據(jù)某種結(jié)果二選一的程序中。如要在兩個(gè)同學(xué)中選一個(gè)當(dāng)班長,就得規(guī)定一個(gè)條件,誰的成績好就選誰,就可以這樣來表示:成績好?甲:乙。如果甲的成績好,則選甲,否則選乙。new運(yùn)算符用于創(chuàng)建一個(gè)新的類型實(shí)例,它有三種形式。

· 對象創(chuàng)建表達(dá)式;

· 數(shù)組創(chuàng)建表達(dá)式;

· 代表創(chuàng)建表達(dá)式。

注意:new創(chuàng)建的類實(shí)例,不一定動(dòng)態(tài)分配內(nèi)存,即內(nèi)存空間。分配空間的意義就是在計(jì)算機(jī)的內(nèi)存中開辟一些空間用于存儲(chǔ)變量。

typeof運(yùn)算符用于獲取原型對象的類型。原型顧名思義就是數(shù)據(jù)類型本來的類型,如int型的原型是int32,就可以看出int在C#中是指32位的整型。它包括值類型和索引類型,下面來演示它的用法。

范例2-8】運(yùn)算符“typeof”的使用。在本例中,將獲取int型、int32型、string型的原型。如示例代碼2-8所示。

示例代碼2-8

        01  using System;                          //包含基本類和基類
        02  ……                                    //還有其他命名空間,也是系統(tǒng)生成,在此省略
        03  namespace Ex_2_8                       //程序的命名空間,也是項(xiàng)目名稱,如Ex_2_8
        04  {
        05     class Program
        06     {
        07         static void Main(string[] args)               //主函數(shù),也是入口函數(shù)
        08         {
        09            Console.WriteLine(typeof(int));            //獲取int型的原型
        10            Console.WriteLine(typeof(System.Int32));   //也可以看做int的原型
        11            Console.WriteLine(typeof(string));         //獲取string型的原型
        12            Console.ReadLine();                   //獲取輸入焦點(diǎn),為了看運(yùn)行結(jié)果
        13         }
        14     }
        15  }

【運(yùn)行結(jié)果】選擇“調(diào)試”|“啟動(dòng)調(diào)試”選項(xiàng)運(yùn)行程序,結(jié)果如圖2.11所示。

圖2.11 運(yùn)算符“typeof”的使用

【代碼解析】在本例中,從第09行~第11行,都是用typeof運(yùn)算符來獲取值類型的原型。這樣的操作在實(shí)際開發(fā)里用得不算很多,只是有時(shí)用于測試一些數(shù)據(jù)類型的原型時(shí)才用到。從運(yùn)行的結(jié)果可以看出,使用typeof運(yùn)算符獲取了系統(tǒng)原型對象的類型。

令廣大初學(xué)者困惑的三目運(yùn)算符還有“? :”。使用好這個(gè)三目運(yùn)算符對程序的優(yōu)化很有幫助,有時(shí)它可以簡化程序的代碼。它的功能是“判斷條件”?“條件成立則執(zhí)行這部分語句”:“條件不成立則執(zhí)行這部分語句”。其過程如圖2.12所示。

圖2.12 “? :”運(yùn)算符的執(zhí)行過程

它和if語句有等價(jià)的關(guān)系,和其對應(yīng)的if結(jié)構(gòu)程序如下所示。

        01  if(判斷條件)               //相當(dāng)于“? :”語句的前面部分
        02  {
        03       return a;             //如果條件為真,相當(dāng)于“? :”中間部分
        04  }
        05  else{
        06       return b;             //相當(dāng)于“? :”后面部分
        07  }

注意:要比較兩個(gè)數(shù)的大小時(shí),常規(guī)的做法是定義一個(gè)中間變量,然后將兩數(shù)進(jìn)行比較,最后進(jìn)行交換。而用“? :”運(yùn)算符,只需要一行代碼就可實(shí)現(xiàn)了,例如(a>b)?max=a:max=b。

主站蜘蛛池模板: 仲巴县| 汽车| 富顺县| 涟源市| 云龙县| 达拉特旗| 城步| 长子县| 新巴尔虎左旗| 大姚县| 荥经县| 平舆县| 炉霍县| 巨野县| 东阳市| 长寿区| 天峨县| 象州县| 大宁县| 洛浦县| 岐山县| 临高县| 应用必备| 那坡县| 德令哈市| 九龙县| 手机| 尉氏县| 贵州省| 滦南县| 高陵县| 扎兰屯市| 弋阳县| 景洪市| 罗源县| 易门县| 西和县| 磐石市| 奉贤区| 枞阳县| 邹平县|