運算子 (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());
    }
}

請參閱

概念

C# 語言入門

參考

C# 運算子