C#中運算符的介紹和使用


下面將介紹C#中的常用到的運算符:條件運算符,is 運算符,as 運算符,sizeof 運算符,typeof 運算符,空合並運算符,空值傳播運算符。

1、條件運算符( ?: )

條件運算符也稱作三元運算符,是if..else 的簡化形式,其名稱的出處是他帶有三個操作數。他首先判斷一個條件,如果條件為真,返回第一個值,否則返回第二個值。恰當的使用三元運算符可以使程序更加簡潔。

形式: condition ?  true_value:false_value  ,如:int a = c > 0 ? c -1:c+1; 

// 一個方法,返回值是 int 類型,參數是 可空類型 int?,該方法用來判斷參數是否為空,不為空返回 +1 值,否則返回 0
public int  GetNum(int? a)
{
    // 1. 使用if...else
    if(a != null)
    {
        return (int)a + 1;
    }
    else
    {
        return 0;
    }
 
    // 2.使用三元運算符
    return a != null ? (int)a + 1 : 0;
}

 

可空類型的介紹和使用點擊打開鏈接

 

2、is 運算符

is 運算符用來判斷變量是否是特定的類型或者是派生自該類型,是返回 true,否則返回 false

int a = 1;
// int 類型不是 long 類型,也不派生自 long 類型
bool type =    a is long; // false
// int 類型是 int 類型,派生自 object 類型
bool type1 = a is object; // true
bool type2 = a is int; // true

 

上面只是簡單的示例,下面是較復雜的,擴展:uint( 范圍:0 ~ 2^32 - 1 ),long( 范圍:-2^63 ~ 2^63 -1 ),ulong( 范圍:0 ~ 2^64 -1 )

// 50 是一個整數,如果沒有顯示聲明的話(用小寫或大寫字母: u 和 U 代表 uint ,l 和 L 代表 long),默認是 int
object  a1 = 50;
// 特殊情況:int 類型的最大整數值是 2^31 - 1 = 2147483647,超過這個范圍,會依次按照(uint,long,ulong)的范圍去定義類型
object  a2 = 2147483648;
bool type3 = a1 is int; // true        
bool type4 = a2 is uint; // true

 

3、as運算符

as 運算符用於將引用類型的顯示轉換,如果要轉換的類型是原類型或者是派生自原類型,則轉換成功,否則返回 null

注意:

(1)、as 運算符只能用於引用類型;

(2)、如果轉換不成功會返回 null。

object a = "str";
object b = 5;
// a 是 string 類型隱式轉換成的 object 類型,as 轉換成功
string c = a as string; // string
// b 是 int 類型隱式轉換成的 object 類型,as 將他轉換成 string 類型,返回 null
string c1 = b as string; // null    

 

4、sizeof 運算符用於返回棧中值類型所需長度(單位:字節)。

// int 是 32 位的,占 4 個字節,1 個字節是 8 位
int a = sizeof(int); // 4

 

注意:sizeof 一般用來獲取基本類型的所占字節數,擴展:基本類型(整數,浮點數(decimal 去除),字符類型,布爾類型)

 

5、typeof 運算符用於返回 指定類型的 System.Type 對象,常用於反射。

注意:typeof 和 GetType() 有相同的作用,區別是:typeof 的參數是 類型,GetType() 的參數是類型的變量

// typeof 的參數是類型,GetType() 方法通過類型的變量調用
Type a = typeof(AAA);
AAA aa = new AAA();
Type b = aa.GetType();

 

6、空合並運算符(??)用於引用類型或是可空類型,返回一個非空的值,當第一個操作數不為空的時候返回第一個,否則返回第二個。

注意:空合並運算符只用於判斷 引用類型 和 可空類型 並返回一個非空的值。

// 可空類型的變量 a
int? a = null;
// 當 a 不為空的時候,?? 將 a 顯示轉換成了 int 類型並賦值給 b,否則 b = 0;
int b = a ?? 0;
 
AAA c = new AAA();
AAA d = c ?? new AAA();

 

7、空值傳播運算符(?.)用來判斷 類 的對象是否為空,為空返回空,否則返回 對應的 字段 或 屬性 值。

 

注意:當結果為空或其他的話,使用空值傳播運算符更加方便,常用於方法的參數判定和賦值。

public class AAA
{
    public static int GetNum(BBB aaa)
    {
        int result = 0;
        if(aaa != null)
        {
            // aaa 不為空的時候判斷他的字段 bbb 是否為空,不為空返回 bbb 的 字段 ccc 的值,否則返回 0
            result = aaa.bbb != null ? aaa.bbb.ccc:0;
        }
        return result;
    }
    public static int GetNum1(BBB aaa)
    {
        // 按照運算符的優先級,相同的運算符是左關聯的(從左到右計算)
        int result = (aaa ?.bbb?.ccc) ?? 0;
        return result;
    }
}
public class BBB
{
    // 包含 CCC 類的一個變量 bbb
    public CCC bbb;
}
public class CCC
{
    // 一個 int 類型的變量 ccc
    public int ccc = 1;
}

 

運算符的優先級點擊打開鏈接

 

出處:https://blog.csdn.net/cloproad/article/details/78923363


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM