5、运算符
1) ?算術運算符
l 一元運算符:++,--
int i = 10;? int j = --i; ?int k = j++; 結果:i=9; j=10; k=9;
l 二元運算符:+,-,*,/,%
10/3 = 3;? 10%3=1; ??10%4=2;? 10%5=0;
2) 邏輯運算符:返回類型永遠是布爾類型
l 一元運算符:取非(!)
bool b = true;? bool r = !b; 結果: ràfalse;
l 二元運算符:條件與(&&),條件或(||)
條件與符號的兩邊都是true的時候,整個表達式是true,只要有一個為false,則整個表達式為false
?? if ((5 > 3) && (7 > 4))
?? {
????? //會執行語句
}
條件或(||)符號的兩邊都是false的時候,整個表達式是false,只要有一個為true,則整個表達式為true
? if ((5 > 3) || (4 > 7))
?? {
????? //會執行語句
}
3) 字符串運算符(+)
string str = “zhang” + “san”;//str = “zhangsan”;
4) 比較運算符:==,!= ,> ,>=,<,<=
l 判斷是否相等:==。如:判斷3和5是否相等: 3==5
l 判斷是否不等:!=。如:判斷3和5是否不等: 3!=5
l 判斷是否大于>:如:判斷3是否大于5: 3>5
l 判斷是否大于等于>=:如:判斷3是否大于等于5: 3>=5
l 判斷是否小于<:如:判斷3是否小于5: 3<5
l 判斷是否小于等于<=:如:判斷3是否小于等于5: 3<=5
注: double類型的數值和int類型的數值作比較是否相等時,不能用==,例:double? 類型的5,可能是5.0001或者4.9999999,所以做比較不能用==,應該寫成
double x=5; int y=5; if(Math.Abs(x-y)<1E-6){//相等}
5) 賦值運算符:=,+=,-=,/=,*=,%=
l 給變量賦值:= 如:int age = 10;
l 先加再賦值:+= 如:age +=5; àage = age + 5;
l -=,/=,*=,%=的算法和上面的一樣。
6) 三元運算符:?:規則:判斷?前面的表達式是否為真(true):若是,則返回:前面的那個數據,否則返回:后面的數據。簡單的說,就是個if..else語句。
int c = (10 > 9)?7:6;
7) Checked和unChecked運算符
例: byte b=255;b++; Console.WriteLine(b.ToString());當加上Checked時,byte b=255; ?Checked{b++;} Console.WriteLine(b.ToString());注:用Checked編輯器選項進行編譯,就可以檢查所有未標記代碼中的益處,如果把一段代碼塊標記為checked,CLR就會執行益處檢查,如果益處就跑出OverflowException異常。如果要禁止檢查,則可以把代碼標記為unchecked。例: byte b=255;
Unchecked{b++;} Console.WriteLine(b.ToString());這樣寫就不會拋出異常,但會丟失數據,因為byte類型不能包含256,溢出位會丟失,所以b變量的得到的值是0。
注:? unChecked是默認行為。只有需要把幾行未檢查的代碼放在一段顯式標記為Checked的打代碼中,才需要顯式地使用unChecked關鍵字。
8) is運算符
is運算符可以檢查對象是否與特定的類型兼容。加絨表示對象或者該類型或者派生類型。例:要價差變量是否與Object理性兼容可使用線面的代碼”
?int i=10; if ( i is object ){ Console.WriteLine(“ I is an object”);}
注:int和所有的書籍類型一樣,也從object繼承而來;表達式 i is object將為true,并顯示相應的消息。
9) as運算符
??? ????????as運算符用于執行引用類型的顯示類型轉換的類型,與指定的類型兼容,轉換就會成功進行;如果類型不兼容,as運算符就會返回null值。
例:
?Object? o1=”Some String”;
?Object? o2=5;
String s1=o1 as string;//輸出結果:s1=”Some String”;
String s2=02 as String;//輸出結果:s2=null;
as運算符允許在一步中進行安全的類型轉換,不需要先使用is運算符測試類型,再執行轉換。
10) Sizeof運算符
使用Sizeof運算符可以確定棧中值類型需要的長度(單位是字節)。例:
Console.WriteLine(sizeof(int));
其結果顯示數字4,因為int有4個字節。如果對于復雜類型(和非基元類型)使用sizeof運算符,就需要把代碼放在unsafe塊中。例:
Unsafe{Console.WriteLine(sizeof(Customer));}
11) Typeof運算符
???? Typeof運算符表示一個特定類型的System.Type對象。例:typeof(String)返回表示System.String類型的Type對象,在使用反射技術動態查找對象的相關信息時,這個運算符很有用。
12) 可空類型和運算符
可空類型與一元或二元運算符一起使用時,如果其中一個操作數或者兩個操作數都是null,結果就是null。例:
int? a=null; int? b=a+4; //b的結果為null;
int? c =a*5; //c的結果為null
但是在比較可空類型時,只要一個操作數是null,比較結果就是false。既不能因為一個條件是false,就認為 對立面是true。例:
int? a=null;
if (a>=b) {Console.WriteLine(“a>=b”);}
else{Console.WriteLine(“a<b”);}? //結果:a<b
13) 空連接運算符:??規則:判斷其前面的數據是否為空(null),若不是整個表達式為其前面的數據,否則為其后面的數據。這個運算符發覺在兩個操作數之間,第一個操作數是一個可空類型或引用類型;第二個操作數必須與第一個操作數的類型相同,或者可以隱含的轉換成第一個操作數的類型。空合并運算符的計算如下:如果第一個操作數不是null,整個表達式就等于第一個操作數的值。如果第一個操作數是null整個表達式就等于第二個操作數的值。
int? a = 10; ?int? b = null;? int? c = a??b;
注:如果一二個操作數不能隱含的轉換為第一個操作數的類型,就會編譯報錯。
備注:如果想讓那兩個數據先運行,則用小括號()括起來。
???? 一個經典的兩個變量值交換:a=(a+b)-(b=a);
練習題:
???? 1、比較|和||有什么不同? &和&& 有什么不同?
????????? |算數或? 例:A|B 對 A ,B都進行判斷。
????????? || 邏輯或。只有當A為假的時候才會對B進行判斷。若A為真,則不繼續對B進行判斷。
????????? | &? 會報所有條件判斷完。
????????? ||? && 順序判斷,當不滿足時,直接結束。
????????? 程序舉例:
class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? int i = 3, j = 3;
??????? ????if (i++ > 2 | i++ > 3 | i++ > 4)
??????????????? Console.WriteLine(i);
??????????? if (j++ > 2 || j++ > 3 || j++ > 4)
??????????????? Console.WriteLine(j);
??????? }
??? }???????? ? ? ?
轉載于:https://www.cnblogs.com/wanghao-chengxuzhijia/p/5085941.html
總結
- 上一篇: php分享十五:php的数据库操作
- 下一篇: 甲乙两个容器中分别只有100单位钠离子和