C 操作符與表示式

2022-08-28 07:54:11 字數 924 閱讀 1778

c#保留了c++所有的操作符,其中指標操作符(*和->)與引用操作符(&)需要有unsafe的上下文。c#擯棄了範圍辨析操作符(::),一律改為單點操作符(.)。我們不再闡述那些保留的c++的操作符,這裡主要介紹c#引入的具有特殊意義的幾個操作符:as,is,new, typeof,sizeof,stackalloc。

as操作符用於執行相容型別之間的轉換,當轉換失敗時,as 操作符結果為null。is 操作符用於檢查物件的執行時型別是否與給定型別相容,當表示式非null且可以轉化為指定型別時,is操作符結果為true,否則為false。as和is操作符是基於同樣的型別鑑別和轉換而設計的,兩者有相似的應用場合。實際上expression as type相當於expression is type ? (type)expression : (type)null。

作為操作符的new用於在堆上建立物件和呼叫建構函式,值得注意的是值型別物件(例如結構)是在堆疊上建立的,而引用型別物件(例如類)是在堆上建立的。new也用於修飾符,用於隱藏基類成員的繼承成員。為隱藏繼承的成員,使用相同名稱在派生類中宣告該成員並用 new 修飾符修改它。typeof 運算子用於獲得某一型別的 system.type 物件,我們將在"第十講 特徵與對映"裡結合microsoft.net的型別系統對它作詳細的闡述。sizeof 運算子用於獲得值型別(不適用於引用型別)的大小(以位元組為單位)。stackalloc用於在堆疊上分配記憶體塊, 僅在區域性變數的初始值設定項中有效,類似於c/c++語言的_alloca。sizeof和statckalloc都由於涉及記憶體的直接操作而需要unsafe上下文。

c#裡的某些操作符可以像c++裡那樣被過載。操作符過載使得自定義型別(類或結構)可以用簡單的操作符來方便的表達某些常用的操作。

為完成乙個計算結果的一系列操作符和運算元的組合稱為表示式。和c++一樣,c#的表示式可以分為賦值表示式和布林表示式兩種,c#沒有引入新的表示式形式,我們對此不再贅述。

表示式與操作符

注意點 1邏輯表示式操作符!2條件表示式 expr1 expr2 expr3 當expr1為真時,表示式值為expr2 當expr1為假時,表示式值為expr3 printf d n 0?100 200 假,顯示200 printf d n 1?100 200 真,顯示100 3逗號表示式 int ...

操作符表示式

一 操作符 1 算數操作符 這都是比較常見的操作符,需要注意的是 的運算元必須是整形。對於 如果兩個運算元是整數執行整除,而只要有浮點數就執行浮點數除法。2.移位操作符 左移,相當於乘法 11 00001011 1 00010110 22 112 1 直接補零 11左移兩位相當於2 2 左移n位相當...

Python表示式操作符

python 表示式操作符 操作符 描述 yield x 生成器函式傳送協議 lambda args expression 生成匿名函式 x if y else z 三元選擇表示式 x or y 邏輯或 只有x為假,才會計算y x and y 邏輯與 只有x為真,才會計算y not x 邏輯非 x ...