C#運(yùn)算符大全_各種運(yùn)算符號(hào)的概述及作用
一、[]
方括號(hào) ([]) 用于數(shù)組、索引器和屬性,也可用于指針。
1、數(shù)組類(lèi)型是一種后跟 [] 的類(lèi)型:
int[] fib = new int[100]; //創(chuàng)建一個(gè)有100元素的數(shù)組
若要訪(fǎng)問(wèn)數(shù)組的一個(gè)元素,則用方括號(hào)括起所需元素的索引:
fib[0] = fib[1] = 1;
for( int i=2; i<100; ++i ) fib[i] = fib[i-1] + fib[i-2];// 如果數(shù)組索引超出范圍,則會(huì)引發(fā)異常。
2、不能重載數(shù)組索引運(yùn)算符;但類(lèi)型可以定義采用一個(gè)或多個(gè)參數(shù)的索引器和屬性。索引器參數(shù)括在方括號(hào)中(就像數(shù)組索引一樣),但索引器參數(shù)可聲明為任何類(lèi)型(這與數(shù)組索引不同,數(shù)組索引必須為整數(shù))。
例如,.NET Framework 定義 Hashtable 類(lèi)型,該類(lèi)型將鍵和任意類(lèi)型的值關(guān)聯(lián)在一起。
Collections.Hashtable h = new Collections.Hashtable();
h["a"] = 123; // note: using a string as the index
3、方括號(hào)還用于指定屬性(C# 編程指南):
[attribute(AllowMultiple=true)]
public class Attr
{
}
4、可以使用方括號(hào)來(lái)指定指針?biāo)饕?BR>unsafe fixed ( int* p = fib ) // p points to fib from earlier example
{
p[0] = p[1] = 1;
for( int i=2; i<100; ++i ) p[i] = p[i-1] + p[i-2];
}
二、()
除了用于指定表達(dá)式中的運(yùn)算順序外,圓括號(hào)還用于指定強(qiáng)制轉(zhuǎn)換或類(lèi)型轉(zhuǎn)換:
double x = 1234.7;
int a;
a = (int)x; // cast double to int
三、.
點(diǎn)運(yùn)算符 (.) 用于成員訪(fǎng)問(wèn)。點(diǎn)運(yùn)算符指定類(lèi)型或命名空間的成員。例如,點(diǎn)運(yùn)算符用于訪(fǎng)問(wèn).NET Framework 類(lèi)庫(kù)中的特定方法:
System.Console.WriteLine("hello");
四、::
命名空間別名限定符運(yùn)算符 (::),用于查找標(biāo)識(shí)符。它通常放置在兩個(gè)標(biāo)識(shí)符之間,例如:
global::System.Console.WriteLine("Hello World");
備注:
命名空間別名限定符可以是 global。這將調(diào)用全局命名空間中的查找,而不是在別名命名空間中。
五、+
+ 運(yùn)算符既可作為一元運(yùn)算符也可作為二元運(yùn)算符。
備注:
一元 + 運(yùn)算符是為所有數(shù)值類(lèi)型預(yù)定義的。對(duì)數(shù)值類(lèi)型進(jìn)行一元 + 運(yùn)算的結(jié)果就是操作數(shù)的值。
為數(shù)值類(lèi)型和字符串類(lèi)型預(yù)定義了二元 + 運(yùn)算符。對(duì)于數(shù)值類(lèi)型,+ 計(jì)算兩個(gè)操作數(shù)之和。當(dāng)其中的一個(gè)操作數(shù)是字符串類(lèi)型或兩個(gè)操作數(shù)都是字符串類(lèi)型時(shí),+ 將操作數(shù)的字符串表示形式串聯(lián)在一起。
委托類(lèi)型也提供二元 + 運(yùn)算符,該運(yùn)算符執(zhí)行委托串聯(lián)。
實(shí)例:
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(+5); // unary plus
Console.WriteLine(5 + 5); // addition
Console.WriteLine(5 + .5); // addition
Console.WriteLine("5" + "5"); // string concatenation
Console.WriteLine(5.0 + "5"); // string concatenation
// note automatic conversion from double to string
}
}
六、-
- 運(yùn)算符既可作為一元運(yùn)算符也可作為二元運(yùn)算符。
一元 - 運(yùn)算符是為所有數(shù)值類(lèi)型預(yù)定義的。數(shù)值類(lèi)型的一元 - 運(yùn)算的結(jié)果是操作數(shù)的反數(shù)。
二元 - 運(yùn)算符是為所有數(shù)值類(lèi)型和枚舉類(lèi)型預(yù)定義的,其功能是從第一個(gè)操作數(shù)中減去第二個(gè)操作數(shù)。
委托類(lèi)型也提供二元 - 運(yùn)算符,該運(yùn)算符執(zhí)行委托移除。
示例:
using System;
class MainClass
{
static void Main()
{
int a = 5;
Console.WriteLine(-a);
Console.WriteLine(a - 1);
Console.WriteLine(a - .5);
}
}
七、*
乘法運(yùn)算符 (*),用于計(jì)算操作數(shù)的積。另外還用作取消引用運(yùn)算符,允許讀取和寫(xiě)入指針。
備注:
所有數(shù)值類(lèi)型都具有預(yù)定義的乘法運(yùn)算符。
* 運(yùn)算符還用來(lái)聲明指針類(lèi)型和取消引用指針。該運(yùn)算符只能在不安全的上下文中使用,通過(guò)unsafe 關(guān)鍵字的使用來(lái)表示,并且需要 /unsafe 編譯器選項(xiàng)。取消引用運(yùn)算符也稱(chēng)為間接尋址運(yùn)算符。
示例:
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(5 * 2);
Console.WriteLine(-.5 * .2);
Console.WriteLine(-.5m * .2m); // decimal type
}
}
八、/
除法運(yùn)算符 (/) 用第二個(gè)操作數(shù)除第一個(gè)操作數(shù)。所有數(shù)值類(lèi)型都具有預(yù)定義的除法運(yùn)算符。
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(-5/2);
Console.WriteLine(-5.0/2);
}
}
九、%
模數(shù)運(yùn)算符 (%) 計(jì)算第二個(gè)操作數(shù)除第一個(gè)操作數(shù)后的余數(shù)。所有數(shù)值類(lèi)型都具有預(yù)定義的模數(shù)運(yùn)算符。
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(5 % 2); // int
Console.WriteLine(-5 % 2); // int
Console.WriteLine(5.0 % 2.2); // double
Console.WriteLine(5.0m % 2.2m); // decimal
Console.WriteLine(-5.2 % 2.0); // double
}
}
十、&
& 運(yùn)算符既可作為一元運(yùn)算符也可作為二元運(yùn)算符。
備注:
一元 & 運(yùn)算符返回操作數(shù)的地址(要求 unsafe 上下文)。
為整型和 bool 類(lèi)型預(yù)定義了二進(jìn)制 & 運(yùn)算符。對(duì)于整型,& 計(jì)算操作數(shù)的邏輯按位“與”。對(duì)于 bool 操作數(shù),& 計(jì)算操作數(shù)的邏輯“與”;也就是說(shuō),當(dāng)且僅當(dāng)兩個(gè)操作數(shù)均為 true 時(shí),結(jié)果才為 true。
& 運(yùn)算符計(jì)算兩個(gè)運(yùn)算符,與第一個(gè)操作數(shù)的值無(wú)關(guān)。例如:
int i = 0;
if (false & ++i == 1)
{
}
十一、|
二元 | 運(yùn)算符是為整型和 bool 類(lèi)型預(yù)定義的。對(duì)于整型,| 計(jì)算操作數(shù)的按位“或”結(jié)果。對(duì)于 bool 操作數(shù),| 計(jì)算操作數(shù)的邏輯“或”結(jié)果;也就是說(shuō),當(dāng)且僅當(dāng)兩個(gè)操作數(shù)均為 false時(shí),結(jié)果才為 false。
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(true | false); // logical or
Console.WriteLine(false | false); // logical or
Console.WriteLine("0x{0:x}", 0xf8 | 0x3f); // bitwise or
}
}
十二、^
二元 ^ 運(yùn)算符是為整型和 bool 類(lèi)型預(yù)定義的。對(duì)于整型,^ 將計(jì)算操作數(shù)的按位“異或”。對(duì)于 bool 操作數(shù),^ 將計(jì)算操作數(shù)的邏輯“異或”;也就是說(shuō),當(dāng)且僅當(dāng)只有一個(gè)操作數(shù)為 true時(shí),結(jié)果才為 true。
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(true ^ false); // logical exclusive-or
Console.WriteLine(false ^ false); // logical exclusive-or
// Bitwise exclusive-or:
Console.WriteLine("0x{0:x}", 0xf8 ^ 0x3f);
}
}
十三、!
邏輯非運(yùn)算符 (!) 是對(duì)操作數(shù)求反的一元運(yùn)算符。為 bool 定義了該運(yùn)算符,當(dāng)且僅當(dāng)操作數(shù)為false 時(shí)才返回 true。
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(!true);
Console.WriteLine(!false);
}
}
十四、~
~ 運(yùn)算符對(duì)操作數(shù)執(zhí)行按位求補(bǔ)運(yùn)算,其效果相當(dāng)于反轉(zhuǎn)每一位。按位求補(bǔ)運(yùn)算符是為int、uint、long 和 ulong 類(lèi)型預(yù)定義的。
using System;
class MainClass
{
static void Main()
{
int[] values = { 0, 0x111, 0xfffff, 0x8888, 0x22000022};
foreach (int v in values)
{
Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
}
}
}
十五、=
賦值運(yùn)算符 (=) 將右操作數(shù)的值存儲(chǔ)在左操作數(shù)表示的存儲(chǔ)位置、屬性或索引器中,并將值作為結(jié)果返回。操作數(shù)的類(lèi)型必須相同(或右邊的操作數(shù)必須可以隱式轉(zhuǎn)換為左邊操作數(shù)的類(lèi)型)。
using System;
class MainClass
{
static void Main()
{
double x;
int i;
i = 5; // int to int assignment
x = i; // implicit conversion from int to double
i = (int)x; // needs cast
Console.WriteLine("i is {0}, x is {1}", i, x);
object obj = i;
Console.WriteLine("boxed value = {0}, type is {1}",
obj, obj.GetType());
i = (int)obj;
Console.WriteLine("unboxed: {0}", i);
}
}
十六、<
所有數(shù)值和枚舉類(lèi)型都定義“小于”關(guān)系運(yùn)算符 (<),如果第一個(gè)操作數(shù)小于第二個(gè)操作數(shù),該運(yùn)算符返回 true,否則返回 false。
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(1 < 1.1);
Console.WriteLine(1.1 < 1.1);
}
}
十七、>
所有數(shù)值類(lèi)型和枚舉類(lèi)型都定義“大于”關(guān)系運(yùn)算符 >,如果第一個(gè)操作數(shù)大于第二個(gè)操作數(shù),它將返回 true,否則返回 false。
using System;
class MainClass
{
static void Main()
{
Console.WriteLine(1.1 > 1);
Console.WriteLine(1.1 > 1.1);
}
}
十八、?:
條件運(yùn)算符 (?:) 根據(jù)布爾型表達(dá)式的值返回兩個(gè)值中的一個(gè)。條件運(yùn)算符的格式如下
condition ? first_expression : second_expression;
備注:
如果條件為 true,則計(jì)算第一表達(dá)式并以它的計(jì)算結(jié)果為準(zhǔn);如果為 false,則計(jì)算第二表達(dá)式并以它的計(jì)算結(jié)果為準(zhǔn)。只計(jì)算兩個(gè)表達(dá)式中的一個(gè)。
使用條件運(yùn)算符,可以更簡(jiǎn)潔、雅觀地表達(dá)那些否則可能要求 if-else 結(jié)構(gòu)的計(jì)算。例如,為在sin 函數(shù)的計(jì)算中避免被零除,可編寫(xiě)為
if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
或使用條件運(yùn)算符,
s = x != 0.0 ? Math.Sin(x)/x : 1.0;
十九、++
增量運(yùn)算符 (++) 將操作數(shù)加 1。增量運(yùn)算符可以出現(xiàn)在操作數(shù)之前或之后:
備注:
第一種形式是前綴增量操作。該操作的結(jié)果是操作數(shù)加 1 之后的值。
第二種形式是后綴增量操作。該運(yùn)算的結(jié)果是操作數(shù)增加之前的值。
數(shù)值類(lèi)型和枚舉類(lèi)型具有預(yù)定義的增量運(yùn)算符。用戶(hù)定義的類(lèi)型可重載 ++ 運(yùn)算符。在枚舉時(shí)通常允許整型運(yùn)算。
二十、--
減量運(yùn)算符 (--) 將操作數(shù)減 1。減量運(yùn)算符可以出現(xiàn)在操作數(shù)之前或之后:--variable 和variable--。第一種形式是前綴減量操作。該運(yùn)算的結(jié)果是操作數(shù)減小“之后”的值。第二種形式是后綴減量操作。該運(yùn)算的結(jié)果是操作數(shù)減小“之前”的值。
備注:
數(shù)值類(lèi)型和枚舉類(lèi)型具有預(yù)定義的增量運(yùn)算符。
用戶(hù)定義的類(lèi)型可重載 -- 運(yùn)算符(請(qǐng)參見(jiàn)運(yùn)算符)。在枚舉時(shí)通常允許整型運(yùn)算。
二十一、&&
條件“與”運(yùn)算符 (&&) 執(zhí)行其 bool 操作數(shù)的邏輯“與”運(yùn)算,但僅在必要時(shí)才計(jì)算第二個(gè)操作數(shù)。
備注:
操作
x && y
對(duì)應(yīng)于操作
x & y
不同的是,如果 x 為 false,則不計(jì)算 y(因?yàn)椴徽?y 為何值,“與”操作的結(jié)果都為false)。這被稱(chēng)作為“短路”計(jì)算。
不能重載條件“與”運(yùn)算符,但常規(guī)邏輯運(yùn)算符和運(yùn)算符 true 與 false 的重載,在某些限制條件下也被視為條件邏輯運(yùn)算符的重載。
二十二、||
條件“或”運(yùn)算符 (||) 執(zhí)行 bool 操作數(shù)的邏輯“或”運(yùn)算,但僅在必要時(shí)才計(jì)算第二個(gè)操作數(shù)。
備注:
操作
x || y
對(duì)應(yīng)于操作
x | y
不同的是,如果 x 為 true,則不計(jì)算 y(因?yàn)椴徽?y 為何值,“或”操作的結(jié)果都為true)。這被稱(chēng)作為“短路”計(jì)算。
不能重載條件“或”運(yùn)算符,但規(guī)則邏輯運(yùn)算符和運(yùn)算符 true 與 false 的重載,在某些限制條件下也被視為條件邏輯運(yùn)算符的重載。
二十三、<<
左移運(yùn)算符 (<<) 將第一個(gè)操作數(shù)向左移動(dòng)第二個(gè)操作數(shù)指定的位數(shù)。第二個(gè)操作數(shù)的類(lèi)型必須是 int。
備注:
如果第一個(gè)操作數(shù)是 int 或 uint(32 位數(shù)),則移位數(shù)由第二個(gè)操作數(shù)的低 5 位給出。
如果第一個(gè)操作數(shù)是 long 或 ulong(64 位數(shù)),則移位數(shù)由第二個(gè)操作數(shù)的低 6 位給出。
第一個(gè)操作數(shù)的高序位被放棄,低序空位用 0 填充。移位操作從不導(dǎo)致溢出。
用戶(hù)定義的類(lèi)型可重載 << 運(yùn)算符(請(qǐng)參見(jiàn) operator);第一個(gè)操作數(shù)的類(lèi)型必須為用戶(hù)定義的類(lèi)型,第二個(gè)操作數(shù)的類(lèi)型必須為 int。重載二元運(yùn)算符時(shí),也會(huì)隱式重載相應(yīng)的賦值運(yùn)算符(如果有)。
二十四、>>
右移運(yùn)算符 (>>) 將第一個(gè)操作數(shù)向右移動(dòng)第二個(gè)操作數(shù)所指定的位數(shù)。
備注:
如果第一個(gè)操作數(shù)為 int 或 uint(32 位數(shù)),則移位數(shù)由第二個(gè)操作數(shù)的低五位給出(第二個(gè)操作數(shù) & 0x1f)。
如果第一個(gè)操作數(shù)為 long 或 ulong(64 位數(shù)),則移位數(shù)由第二個(gè)操作數(shù)的低六位給出(第二個(gè)操作數(shù) & 0x3f)。
如果第一個(gè)操作數(shù)為 int 或 long,則右移位是算術(shù)移位(高序空位設(shè)置為符號(hào)位)。如果第一個(gè)操作數(shù)為 uint 或 ulong 類(lèi)型,則右移位是邏輯移位(高位填充 0)。
用戶(hù)定義的類(lèi)型可重載 >> 運(yùn)算符;第一個(gè)操作數(shù)的類(lèi)型必須為用戶(hù)定義的類(lèi)型,第二個(gè)操作數(shù)的類(lèi)型必須為 int。有關(guān)更多信息,請(qǐng)參見(jiàn) operator。重載二元運(yùn)算符時(shí),也會(huì)隱式重載相應(yīng)的賦值運(yùn)算符(如果有)。
二十五、==
對(duì)于預(yù)定義的值類(lèi)型,如果操作數(shù)的值相等,則相等運(yùn)算符 (==) 返回 true,否則返回 false。對(duì)于 string 以外的引用類(lèi)型,如果兩個(gè)操作數(shù)引用同一個(gè)對(duì)象,則 == 返回 true。對(duì)于string 類(lèi)型,== 比較字符串的值。
備注:
用戶(hù)定義的值類(lèi)型可重載 == 運(yùn)算符(請(qǐng)參見(jiàn) operator)。用戶(hù)定義的引用類(lèi)型也可重載 == 運(yùn)算符,盡管在默認(rèn)情況下,無(wú)論對(duì)于預(yù)定義的引用類(lèi)型還是用戶(hù)定義的引用類(lèi)型,== 的行為都與上面描述的相同。如果重載 ==,則還必須重載 !=。在枚舉時(shí)通常允許整型運(yùn)算。
二十六、!=
如果操作數(shù)相等,則不等運(yùn)算符 (!=) 返回 false,否則,返回 true。為所有類(lèi)型(包括字符串和對(duì)象)預(yù)定義了不等運(yùn)算符。用戶(hù)定義的類(lèi)型可重載 != 運(yùn)算符。
備注:
對(duì)于預(yù)定義的值類(lèi)型,如果操作數(shù)的值不同,則不等運(yùn)算符 (!=) 返回 true,否則,返回false。對(duì)于 string 以外的引用類(lèi)型,如果兩個(gè)操作數(shù)引用不同的對(duì)象,則 != 返回 true。對(duì)于 string 類(lèi)型,!= 比較字符串的值。
用戶(hù)定義的值類(lèi)型可重載 != 運(yùn)算符(請(qǐng)參見(jiàn) operator)。用戶(hù)定義的引用類(lèi)型也可重載 != 運(yùn)算符,盡管在默認(rèn)情況下,無(wú)論對(duì)于預(yù)定義的引用類(lèi)型還是用戶(hù)定義的引用類(lèi)型,!= 的行為都與上面描述的相同。如果重載 !=,則還必須重載 ==。在枚舉時(shí)通常允許整型運(yùn)算。
二十七、<=
所有數(shù)值和枚舉類(lèi)型都定義了“小于等于”關(guān)系運(yùn)算符 (<=),如果第一個(gè)操作數(shù)小于或等于第二個(gè)操作數(shù),則該運(yùn)算符將返回 true,否則返回 false。
二十八、>=
所有數(shù)值類(lèi)型和枚舉類(lèi)型都定義“大于等于”關(guān)系運(yùn)算符 >=,如果第一個(gè)操作數(shù)大于或等于第二個(gè)操作數(shù),該運(yùn)算符將返回 true,否則返回 false。
二十九、+=
加法賦值運(yùn)算符。
備注:
使用 += 賦值運(yùn)算符的表達(dá)式,例如
x += y
等效于
x = x + y
不同的是 x 只計(jì)算一次。+ 運(yùn)算符的含義取決于 x 和 y 的類(lèi)型(例如,對(duì)于數(shù)值操作數(shù),其含義為相加;對(duì)于字符串操作數(shù),其含義為串聯(lián))。
不能直接重載 += 運(yùn)算符,但用戶(hù)定義的類(lèi)型可以重載 + 運(yùn)算符(請(qǐng)參見(jiàn) operator)。
三十、-=
減法賦值運(yùn)算符。
備注:
使用 -= 賦值運(yùn)算符的表達(dá)式,如
x -= y
等效于
x = x - y
不同的是 x 只計(jì)算一次。- 運(yùn)算符的含義取決于 x 和 y 的類(lèi)型(例如,對(duì)于數(shù)值操作數(shù),其含義為相減;對(duì)于委托操作數(shù),其含義為移除)。
不能直接重載 -= 運(yùn)算符,但用戶(hù)定義的類(lèi)型可重載 - 運(yùn)算符(請(qǐng)參見(jiàn) operator)。
三十一、*=
二元乘法賦值運(yùn)算符。
備注:
使用 *= 賦值運(yùn)算符的表達(dá)式,如
x *= y
等效于
x = x * y
不同的是 x 只計(jì)算一次。為數(shù)值類(lèi)型預(yù)定義了 * 運(yùn)算符以執(zhí)行乘法操作。
不能直接重載 *= 運(yùn)算符,但用戶(hù)定義的類(lèi)型可重載 * 運(yùn)算符(請(qǐng)參見(jiàn) operator)。
三十二、/=
除法賦值運(yùn)算符。
備注:
使用 /= 賦值運(yùn)算符的表達(dá)式,如
x /= y
等效于
x = x / y
不同的是 x 只計(jì)算一次。為數(shù)值類(lèi)型預(yù)定義了 / 運(yùn)算符以執(zhí)行除法操作。
不能直接重載 /= 運(yùn)算符,但用戶(hù)定義的類(lèi)型可重載 / 運(yùn)算符(請(qǐng)參見(jiàn) operator)。對(duì)于所有復(fù)合賦值運(yùn)算符,隱式重載二元運(yùn)算符會(huì)重載等效的復(fù)合賦值。
三十三、%=
模塊賦值運(yùn)算符。
備注:
使用 %= 賦值運(yùn)算符的表達(dá)式,如
x %= y
等效于
x = x % y
不同的是 x 只計(jì)算一次。為數(shù)值類(lèi)型預(yù)定義了 % 運(yùn)算符,以計(jì)算相除后的余數(shù)。
不能直接重載 %= 運(yùn)算符,但用戶(hù)定義的類(lèi)型可重載 % 運(yùn)算符(請(qǐng)參見(jiàn)運(yùn)算符(C# 參考))。
三十四、&=
“與”賦值運(yùn)算符。
備注:
使用 &= 賦值運(yùn)算符的表達(dá)式,如
x &= y
等效于
x = x & y
不同的是 x 只計(jì)算一次。& 運(yùn)算符對(duì)整數(shù)操作數(shù)執(zhí)行按位邏輯“與”運(yùn)算,對(duì) bool 操作數(shù)執(zhí)行邏輯“與”運(yùn)算。
不能直接重載 &= 運(yùn)算符,但用戶(hù)定義的類(lèi)型可重載二元 & 運(yùn)算符(請(qǐng)參見(jiàn) operator)。
三十五、|=
“或”賦值運(yùn)算符。
備注:
使用 |= 賦值運(yùn)算符的表達(dá)式,例如
x |= y
等效于
x = x | y
不同的是 x 只計(jì)算一次。| 運(yùn)算符對(duì)整型操作數(shù)執(zhí)行按位邏輯“或”運(yùn)算,對(duì)布爾操作數(shù)執(zhí)行邏輯“或”運(yùn)算。
不能直接重載 |= 運(yùn)算符,但用戶(hù)定義的類(lèi)型可以重載 | 運(yùn)算符(請(qǐng)參見(jiàn) operator)。
三十六、^=
“異或”賦值運(yùn)算符。
備注:
下列形式的表達(dá)式
x ^= y
按如下規(guī)則計(jì)算:
x = x ^ y
不同的是 x 只計(jì)算一次。^ 運(yùn)算符對(duì)整數(shù)操作數(shù)執(zhí)行按位“異或”運(yùn)算,對(duì) bool 操作數(shù)執(zhí)行邏輯“異或”運(yùn)算。
不能直接重載 ^= 運(yùn)算符,但用戶(hù)定義的類(lèi)型可重載 ! 運(yùn)算符(請(qǐng)參見(jiàn) operator)。
三十七、<<=
左移賦值運(yùn)算符。
備注:
下列形式的表達(dá)式
x <<= y
按如下規(guī)則計(jì)算:
x = x << y
不同的是 x 只計(jì)算一次。<< 運(yùn)算符將 x 向左移動(dòng) y 指定的位數(shù)。
不能直接重載 <<= 運(yùn)算符,但用戶(hù)定義的類(lèi)型可重載 << 運(yùn)算符(請(qǐng)參見(jiàn) operator)。
三十八、>>=
右移賦值運(yùn)算符。
備注:
下列形式的表達(dá)式
x >>= y
按如下規(guī)則計(jì)算:
x = x >> y
不同的是 x 只計(jì)算一次。>> 運(yùn)算符根據(jù) y 指定的量對(duì) x 進(jìn)行右移位。
不能直接重載 >>= 運(yùn)算符,但用戶(hù)定義的類(lèi)型可重載 >> 運(yùn)算符(請(qǐng)參見(jiàn) operator)。
三十九、->
-> 運(yùn)算符將指針取消引用與成員訪(fǎng)問(wèn)組合在一起。
備注:
以下形式的表達(dá)式
x->y
(其中 x 為 T* 類(lèi)型的指針,y 為 T 的成員)等效于
(*x).y
-> 運(yùn)算符只能在非托管代碼中使用。
不能重載 -> 運(yùn)算符。
四十、??
如果 ?? 運(yùn)算符的左操作數(shù)非空,該運(yùn)算符將返回左操作數(shù),否則返回右操作數(shù)。
備注:
可空類(lèi)型可以包含值,或者可以是未定義的。?? 運(yùn)算符定義當(dāng)可空類(lèi)型分配給非可空類(lèi)型時(shí)返回的默認(rèn)值。如果在將可空類(lèi)型分配給非可空類(lèi)型時(shí)不使用 ?? 運(yùn)算符,將生成編譯時(shí)錯(cuò)誤。如果使用強(qiáng)制轉(zhuǎn)換,并且當(dāng)前未定義可空類(lèi)型,將發(fā)生 InvalidOperationException 異常。
相關(guān)文章
C#字符串與數(shù)值類(lèi)型、字節(jié)數(shù)組的互相轉(zhuǎn)換實(shí)戰(zhàn)案例
最近由于編程的需要,對(duì)C#的類(lèi)型轉(zhuǎn)換做了一些研究,下面這篇文章主要給大家介紹了關(guān)于C#字符串與數(shù)值類(lèi)型、字節(jié)數(shù)組的互相轉(zhuǎn)換的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
C#中OpenCvSharp 通過(guò)特征點(diǎn)匹配圖片的方法
這篇文章主要介紹了OpenCvSharp 通過(guò)特征點(diǎn)匹配圖片的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
C#針對(duì)xml文件轉(zhuǎn)化Dictionary的方法
這篇文章主要介紹了C#針對(duì)xml文件轉(zhuǎn)化Dictionary的方法,是C#操作XML文件的典型應(yīng)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
c#操作sql server2008 的界面實(shí)例代碼
這篇文章主要介紹了c#操作sql server2008 的界面實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
C#實(shí)現(xiàn)讀寫(xiě)分離的五種方法小結(jié)
在C#中實(shí)現(xiàn)分離功能通常指的是將不同的邏輯或責(zé)任分配到不同的類(lèi)或組件中,以增強(qiáng)代碼的可讀性、可維護(hù)性和可擴(kuò)展性,這通常涉及到設(shè)計(jì)模式、依賴(lài)注入和接口的使用,下面是一些在C#中實(shí)現(xiàn)分離功能的基本方法,需要的朋友可以參考下2025-03-03
C#創(chuàng)建及訪(fǎng)問(wèn)網(wǎng)絡(luò)硬盤(pán)的實(shí)現(xiàn)
本文主要介紹了C#創(chuàng)建及訪(fǎng)問(wèn)網(wǎng)絡(luò)硬盤(pán)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

