运算符(Visual C# 速成版)

更新:2007 年 11 月

在 C# 中,运算符的语法与其他 C 样式编程语言类似。运算符用于执行计算,为变量赋值,进行相等或不相等测试,以及执行其他操作。

以下各节列出了 C# 中最常用的一些运算符。有关所有运算符的完整列表,请参见 C# 运算符

赋值和相等运算符

在 C# 中,等号 (=) 运算符具有与在 C 和 C++ 中相同的功能:

运算符

用途

=

赋值。

==

相等测试。

示例

int x = 100;
if (x == 100)
{
    System.Console.WriteLine("X is equal to 100");
}

数学和逻辑运算符

下面是基本数学运算符的列表,按优先级的顺序列出。使用括号可强制改变运算顺序。

运算符

用途

*, /, %

乘法、除法、取模

+, -

加法、减法

&

逻辑“与”

^

逻辑“异或”

|

逻辑“或”

示例

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);

关系运算符

下面的运算符比较两个值,然后返回 bool 结果:

运算符

用途

==

检查是否相等。

!=

检查是否不相等。

>

大于。

<

小于。

>=

大于或等于。

<=

小于或等于。

示例

int x = int.Parse(System.Console.ReadLine());

if (x > 100)
{
    System.Console.WriteLine("X is greater than 100");
}

逻辑条件运算符

通过组合多个子句,逻辑运算符可用来创建更为灵活的条件语句:

运算符

用途

&&

条件与。

||

条件或。

!

条件非。

示例

int x = int.Parse(System.Console.ReadLine());

if ((x >= 100) && (x <= 200))
{
    System.Console.WriteLine("X is between 100 and 200");
}

更多高级数学运算符

若要执行更多高级数学运算(例如,三角学),请使用 Math 框架类。在此示例中,使用的是 Sin(正弦)和 Sqrt(平方根)方法,以及 PI 常数:

示例

double d = System.Math.Sin(System.Math.PI/2);
double e = System.Math.Sqrt(144);

运算符重载

C# 支持“运算符重载”;使用此功能可结合自己的数据类型对运算符进行重新定义,使运算符更有意义。在下面的示例中,创建了一个结构,它将星期中的一天存储在由枚举定义的变量类型中。有关更多信息,请参见结构(Visual C# 速成版)枚举(Visual C# 速成版)。对加法运算符进行了重载,这样使当前天可以加上一个整数天数,然后返回新的星期几。因此,星期日加上一天,则返回星期一。

示例

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# 运算符