運算子 (Visual C# Express)
更新:2007 年 11 月
C# 的運算子與 C-Style 程式設計語言的語法類似。運算子可用來執行計算、指派值給變數、測試是否相等或不等,以及執行其他作業。
以下章節列出 C# 中一些常用的運算子。如需所有運算子的完整清單,請參閱 C# 運算子。
設定運算子和等號比較運算子
C# 的等號 (=) 運算子與 C 和 C++ 的功能相同:
運算子 |
用途 |
---|---|
= |
指派值 |
== |
測試是否相等 |
範例
int x = 100;
if (x == 100)
{
System.Console.WriteLine("X is equal to 100");
}
數學和邏輯運算子
下列是基本算術運算子的清單,以優先順序列出。請使用括弧強制其他順序。
運算子 |
用途 |
---|---|
*, /, % |
乘法、除法、模數 |
+, - |
加法、減法 |
& |
邏輯 AND |
^ |
邏輯 XOR |
| |
邏輯 OR |
範例
int x = 1;
int y = x + 10 * 100; // multiplication first y = 1001
int z = (x + 10) * 100; // addition first z = 1100
遞增和遞減運算子
支援 C/C++ 樣式捷徑,其中包含後置和前置運算子,如下列範例中所示:
運算子 |
用途 |
---|---|
v++ |
變數 v 遞增 1 |
v+=n |
變數 v 遞增 n |
v*=n |
變數 v 乘 n |
v-=n |
變數 v 減 n |
範例
int x = 0;
int y = x++; // x is 1, y is 0
System.Console.WriteLine("{0} {1}", x, y);
int z = ++x; // x is 2, z is 2
System.Console.WriteLine("{0} {1}", x, z);
關係運算子
下列運算子會比較兩個數值然後傳回布林值結果:
運算子 |
用途 |
---|---|
== |
檢查是否相等 |
!= |
檢查是否不相等 |
> |
大於 |
< |
小於 |
>= |
大於或等於 |
<= |
小於或等於 |
範例
int x = int.Parse(System.Console.ReadLine());
if (x > 100)
{
System.Console.WriteLine("X is greater than 100");
}
邏輯條件運算子
邏輯運算子是藉由結合多個子句,以建立更有彈性的條件陳述式:
運算子 |
用途 |
---|---|
&& |
條件式 AND |
|| |
條件式 OR |
! |
條件式 NOT |
範例
int x = int.Parse(System.Console.ReadLine());
if ((x >= 100) && (x <= 200))
{
System.Console.WriteLine("X is between 100 and 200");
}
進階算術運算子
若要執行更進階的算術運算 (例如三角函數),請使用 Math Frameworks 類別。在這個範例中,會使用 Sin (正弦) 和 Sqrt (平方根) 方法以及 PI 常數:
範例
double d = System.Math.Sin(System.Math.PI/2);
double e = System.Math.Sqrt(144);
運算子多載
C# 支援「運算子多載」(Operator Overloading),當搭配自己的資料型別使用時,可以讓您重新定義更有意義的運算子。在下列範例中會建立結構 (Struct),以便將一週中的一天儲存在列舉型別 (Enumeration) 所定義的變數型別中。如需詳細資訊,請參閱 結構 (Visual C# Express)和列舉型別 (Visual C# Express)。加法運算子會多載以便將整數天數加入目前的日期,然後傳回一週的新日期。所以星期日加一天就會傳回星期一。
範例
using System;
// Define an DayOfWeek data type
enum DayOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
// Define a struct to store the methods and operators
struct Day
{
private DayOfWeek day;
// The constructor for the struct
public Day(DayOfWeek initialDay)
{
day = initialDay;
}
// The overloaded + operator
public static Day operator +(Day lhs, int rhs)
{
int intDay = (int)lhs.day;
return new Day((DayOfWeek)((intDay + rhs) % 7));
}
// An overloaded ToString method
public override string ToString()
{
return day.ToString();
}
}
public class Program
{
static void Main()
{
// Create a new Days object called "today"
Day today = new Day(DayOfWeek.Sunday);
Console.WriteLine(today.ToString());
today = today + 1;
Console.WriteLine(today.ToString());
today = today + 14;
Console.WriteLine(today.ToString());
}
}