csharp:运算符

C# 常用运算符大全

C# 提供了丰富的运算符来处理算术、逻辑、位运算以及对象类型操作。除了处理 Null 值的 `?` 和 `??`,以下是其他核心运算符的详细分类讲解。

用于执行基本的数学运算。

运算符 描述 示例
`+` 加法 (也用于字符串拼接) `x + y` 或 `“Hello” + “ World”`
`-` 减法 `x - y`
`*` 乘法 `x * y`
`/` 除法 (整数相除会截断小数) `10 / 3` 结果为 `3`
`%` 取模 (求余数) `10 % 3` 结果为 `1`
`++` 自增 (前缀或后缀) `x++` (先用后加) / `++x` (先加后用)
`–` 自减 (前缀或后缀) `x–` / `–x`
int a = 10;
int b = 3;
Console.WriteLine(a / b); // 输出 3 (整数除法)
Console.WriteLine(a % b); // 输出 1 (余数)
Console.WriteLine(a + " is number"); // 字符串拼接

主要用于布尔 (`bool`) 逻辑判断,常用于 `if` 或 `while` 语句中。

运算符 名称 描述
`&&` 逻辑与 (AND) 只有两边都为真,结果才为真。短路特性:如果左边为假,右边不再执行。
`` 逻辑或 (OR) 只要有一边为真,结果就为真。短路特性:如果左边为真,右边不再执行。
`!` 逻辑非 (NOT) 取反,真变假,假变真。
bool hasLogin = true;
bool hasPermission = false;
 
if (hasLogin && !hasPermission) 
{
    Console.WriteLine("已登录但无权限");
}

用于比较两个值,返回 `true` 或 `false`。

运算符 描述
`==` 等于
`!=` 不等于
`>` 大于
`<` 小于
`>=` 大于等于
`⇐` 小于等于

在处理多态、接口或不确定类型的对象时非常重要。

用于检查对象是否兼容于指定类型。C# 7.0+ 支持模式匹配。

object obj = "Hello World";
 
// 传统用法
if (obj is string) 
{
    Console.WriteLine("是字符串");
}
 
// 模式匹配用法 (推荐)
if (obj is string str) 
{
    // 如果转换成功,str 变量直接可用
    Console.WriteLine($"字符串长度: {str.Length}");
}

用于显式引用转换。如果转换失败,返回 `null` 而不是抛出异常。

object obj = "Hello";
string s = obj as string; // 转换成功
System.IO.Stream stream = obj as System.IO.Stream; // 转换失败,stream 为 null
 
if (stream != null) { /*...*/ }

用于获取类型的 `System.Type` 对象(通常用于反射)。

Type t = typeof(string);
Console.WriteLine(t.FullName); // System.String

用于直接操作整数的二进制位。

运算符 描述 示例 (假设 A=60, B=13)
`&` 按位与 `A & B` (对应位都为1则为1)
`` 按位或 `A B` (对应位有一个为1则为1)
`` 按位异或 `A B` (对应位不同则为1)
`~` 按位取反 `~A` (0变1,1变0)
`«` 左移 `A « 2` (左移2位,相当于乘以4)
`»` 右移 `A » 2` (右移2位,相当于除以4)

读作 “goes to”。用于定义 Lambda 表达式(匿名函数)。

// 参数 => 表达式
Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // 25
 
// 在 LINQ 中广泛使用
var list = new List<int> { 1, 2, 3 };
var evens = list.Where(n => n % 2 == 0);

(C# 8.0+) 用于简化数组或集合的切片操作。

运算符 名称 描述
`` 索引运算符 从末尾开始计数。`1` 是最后一个元素。
`..` 范围运算符 定义一个范围。`start..end` (包含 start,不包含 end)。
var words = new string[] { "The", "quick", "brown", "fox" };
 
// 获取最后一个元素
string last = words[^1]; // "fox"
 
// 获取中间两个元素 (索引1到索引3,不含3)
string[] middle = words[1..3]; // ["quick", "brown"]
 
// 获取最后两个
string[] lastTwo = words[^2..]; // ["brown", "fox"]
类别 常用运算符 关键点
算术 `+`, `-`, `*`, `/`, `%`, `++`, `–` 注意整数除法会丢失小数。
逻辑 `&&`, ``, `!` `&&` 和 `` 具有短路特性。
比较 `==`, `!=`, `>`, `<`, `>=`, `⇐` 结果总是 bool 类型。
位运算 `&`, ``, ``, `~`, `«`, `»` 用于底层二进制操作。
赋值 `=`, `+=`, `-=`, `*=`, `/=` `x += 5` 等同于 `x = x + 5`。
类型 `is`, `as`, `typeof`, `(T)x` `as` 转换失败返回 null,`(T)` 强制转换失败抛异常。
Lambda `⇒` 连接参数和方法体,用于 LINQ 和委托。
索引/范围 ``, `..` C# 8.0 新特性,用于数组切片。
Null处理 `?`, `??`, `?.`, `??=` 参见之前的 Null 运算符文档。
请输入您的评论. 可以使用维基语法:
 

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • csharp/运算符.txt
  • 最后更改: 2025/12/22 11:37
  • 张叶安