显示页面讨论反向链接回到顶部 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== C# 常用运算符大全 ====== C# 提供了丰富的运算符来处理算术、逻辑、位运算以及对象类型操作。除了处理 Null 值的 `?` 和 `??`,以下是其他核心运算符的详细分类讲解。 ===== 1. 算术运算符 (Arithmetic Operators) ===== 用于执行基本的数学运算。 ^ 运算符 ^ 描述 ^ 示例 ^ | `+` | 加法 (也用于字符串拼接) | `x + y` 或 `"Hello" + " World"` | | `-` | 减法 | `x - y` | | `*` | 乘法 | `x * y` | | `/` | 除法 (整数相除会截断小数) | `10 / 3` 结果为 `3` | | `%` | 取模 (求余数) | `10 % 3` 结果为 `1` | | `++` | 自增 (前缀或后缀) | `x++` (先用后加) / `++x` (先加后用) | | `--` | 自减 (前缀或后缀) | `x--` / `--x` | <code csharp> int a = 10; int b = 3; Console.WriteLine(a / b); // 输出 3 (整数除法) Console.WriteLine(a % b); // 输出 1 (余数) Console.WriteLine(a + " is number"); // 字符串拼接 </code> ===== 2. 逻辑运算符 (Logical Operators) ===== 主要用于布尔 (`bool`) 逻辑判断,常用于 `if` 或 `while` 语句中。 ^ 运算符 ^ 名称 ^ 描述 ^ | `&&` | 逻辑与 (AND) | 只有两边都为真,结果才为真。**短路特性**:如果左边为假,右边不再执行。 | | `||` | 逻辑或 (OR) | 只要有一边为真,结果就为真。**短路特性**:如果左边为真,右边不再执行。 | | `!` | 逻辑非 (NOT) | 取反,真变假,假变真。 | <code csharp> bool hasLogin = true; bool hasPermission = false; if (hasLogin && !hasPermission) { Console.WriteLine("已登录但无权限"); } </code> ===== 3. 比较/关系运算符 (Relational Operators) ===== 用于比较两个值,返回 `true` 或 `false`。 ^ 运算符 ^ 描述 ^ | `==` | 等于 | | `!=` | 不等于 | | `>` | 大于 | | `<` | 小于 | | `>=` | 大于等于 | | `<=` | 小于等于 | ===== 4. 类型检查与转换运算符 (Type Testing & Casting) ===== 在处理多态、接口或不确定类型的对象时非常重要。 ==== 4.1 is 运算符 ==== 用于检查对象是否兼容于指定类型。C# 7.0+ 支持模式匹配。 <code csharp> object obj = "Hello World"; // 传统用法 if (obj is string) { Console.WriteLine("是字符串"); } // 模式匹配用法 (推荐) if (obj is string str) { // 如果转换成功,str 变量直接可用 Console.WriteLine($"字符串长度: {str.Length}"); } </code> ==== 4.2 as 运算符 ==== 用于显式引用转换。如果转换失败,返回 `null` 而不是抛出异常。 <code csharp> object obj = "Hello"; string s = obj as string; // 转换成功 System.IO.Stream stream = obj as System.IO.Stream; // 转换失败,stream 为 null if (stream != null) { /*...*/ } </code> ==== 4.3 typeof 运算符 ==== 用于获取类型的 `System.Type` 对象(通常用于反射)。 <code csharp> Type t = typeof(string); Console.WriteLine(t.FullName); // System.String </code> ===== 5. 位运算符 (Bitwise Operators) ===== 用于直接操作整数的二进制位。 ^ 运算符 ^ 描述 ^ 示例 (假设 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) | ===== 6. Lambda 运算符 (=>) ===== 读作 "goes to"。用于定义 Lambda 表达式(匿名函数)。 <code csharp> // 参数 => 表达式 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); </code> ===== 7. 索引与范围运算符 (Index & Range) ===== //(C# 8.0+)// 用于简化数组或集合的切片操作。 ^ 运算符 ^ 名称 ^ 描述 ^ | `^` | 索引运算符 | 从末尾开始计数。`^1` 是最后一个元素。 | | `..` | 范围运算符 | 定义一个范围。`start..end` (包含 start,不包含 end)。 | <code csharp> 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"] </code> ===== 9. 综合总结表 ===== ^ 类别 ^ 常用运算符 ^ 关键点 ^ | **算术** | `+`, `-`, `*`, `/`, `%`, `++`, `--` | 注意整数除法会丢失小数。 | | **逻辑** | `&&`, `||`, `!` | `&&` 和 `||` 具有短路特性。 | | **比较** | `==`, `!=`, `>`, `<`, `>=`, `<=` | 结果总是 bool 类型。 | | **位运算** | `&`, `|`, `^`, `~`, `<<`, `>>` | 用于底层二进制操作。 | | **赋值** | `=`, `+=`, `-=`, `*=`, `/=` | `x += 5` 等同于 `x = x + 5`。 | | **类型** | `is`, `as`, `typeof`, `(T)x` | `as` 转换失败返回 null,`(T)` 强制转换失败抛异常。 | | **Lambda** | `=>` | 连接参数和方法体,用于 LINQ 和委托。 | | **索引/范围**| `^`, `..` | C# 8.0 新特性,用于数组切片。 | | **Null处理**| `?`, `??`, `?.`, `??=` | 参见之前的 Null 运算符文档。 | 登录 Detach Close 该主题尚不存在 您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。 csharp/运算符.txt 最后更改: 2025/12/22 11:37由 张叶安 登录