运算符(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());
}
}