程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#各種運算符詳解

c#各種運算符詳解

編輯:C#入門知識

c#主要支持下面所示的運算符:
 
算術運算符                         + - * / %
邏輯運算符                         & | ^ ~ && || !
字符串連接運算符                   +
增量和減量運算符                   ++ --
移位運算符                         << >>
比較運算符                         == != < > <= >=
賦值運算符                         = += -= *= /= %= |= ^= <<= >>=
成員訪問運算符(用於對象和結構)   .
索引運算符(用於數組和索引器)     []
數據類型轉換運算符                 ()
條件運算符(三元運算符)           ?:
委托連接和刪除運算符               + -
對象創建運算符                     new
類型信息運算符                     sizeof(只用於不安全的代碼)  is as typeof
溢出異常控制運算符                 checked unchecked
間接尋址運算符                     * -> &(只用於不安全的代碼) []
命名空間別名限定符                 ::
空接合運算符                       ??
 
比較不常用卻又很重要的運算符:
1、is運算符和as運算符
is運算符可以檢查對象是否與特定的類型兼容。比如下例中要檢查變量是否與object類型兼容:
int i=0;
if(i is object)
{
  Console.WriteLine("i is an object.");
}
as運算符用於執行引用類型的顯式類型轉換。如果要轉換的類型和指定的類型兼容,轉換就會成功進行;如果類型不兼容,as運算符就會返回值null。舉例如下:
object obj1="a string";
object obj2=5;
string str1= obj1 as string;// str1="a string";
string str2= obj2 as string;//str2=null;
注:as運算符允許在一步中進行安全的類型轉換,不需要先使用is運算符測試類型,再執行轉換。
2、checked和unchecked運算符
有如下的代碼:
byte b=255;
b++;
Console.WriteLine(b.ToString());
byte數據類型只能包含0~255的數,所以b值的增量會溢出。CLR如何處理溢出?C#提供了checked和unchecked運算符。如果把一塊代碼段標志為checked,CLR就會執行溢出檢查,如果發生異常,就拋出異常。
byte b=255;
checked
{
  b++; //拋出OverflowException
}
Console.WriteLine(b.ToString());
如果要禁止溢出檢查,可以把代碼標記為unchecked:
byte b=255;
unchecked
{
  b++;
}
Console.WriteLine(b.ToString());
在上述代碼中,不會拋出異常,但會丟失數據,因為byte數據類型不能包含256位,溢出的位會丟失,b變量得到的值是0.
注:unchecked是默認值。只有在需要把幾個未檢查的代碼行放在一個明確標記為checked的大代碼塊中,才需要顯式使用unchecked關鍵字。
3、sizeof運算符
學過c的都知道,sizeof可以用來確定堆棧中值類型需要的長度(單位是字節):
unsafe
{
  Console.WriteLine(sizeof(int));//結果為4,因為int有四個字節,32位 
}
4、可空類型和運算符
如果在程序中使用可空類型,就必須考慮null值在與各種運算符一起使用時的影響。通常可空類型與一元或二元運算符一起使用時,如果其中一個操作數或兩個操作數都是null,其結果就是null。
int?a = null;
int?b = a+4; //b=null;
int?c = a*2; //c=null;
注意,在比較可空類型時,只有有一個操作數是null,比較的結果就是false。即不能認為因為一個條件是false,那麼它的對立面就是true。
int?a=null;
int?b=10;
if(a>=b) //空值a顯然不能和b比較
  Console.WriteLine("a>=b");
else
  Console.WriteLine("a<b");
5、空接合運算符(??)
空接合運算符為處理可空類型和引用類型時表示Null值的可能性提供了一種快捷方式。這個運算符放在兩個操作數之間,第一個操作數必須是一個可空類型或引用類型,第二個操作數必須與第一個操作數的類型不同,或者可以隱含地轉換為第一個操作數的類型。空接合運算符的計算如下:如果第一個操作數不是null,則整個表達式就等於第一個操作數的值。但如果第一個操作數是null,則整個表達式就等於第二個操作數的值。例如:
int?a=null;
int b;
b=a??10; // b的值為10;
a=15;
b=a??10;//  b的值為15;
注意:如果第二個操作數不能隱含地轉換為第一個操作數的類型,就生成一個編譯錯誤。

 


摘自 SamWang

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved