Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 2.2 运算符与表达式

2.2 运算符与表达式

2.2.1 运算符概述

C# 提供了丰富的运算符,用于对变量和值执行各种操作。运算符可以分为以下几类:

  • 算术运算符:用于执行基本数学运算(+, -, *, /, %)
  • 关系运算符:用于比较两个值(==, !=, >, <, >=, <=)
  • 逻辑运算符:用于组合或反转布尔条件(&&, ||, !)
  • 赋值运算符:用于给变量赋值(=, +=, -=, *=, /=等)
  • 位运算符:用于对二进制位进行操作(&, |, ^, ~, <<, >>)
  • 其他运算符:包括条件运算符(?:)、成员访问运算符(.)等

2.2.2 表达式与运算符优先级

表达式是由运算符和操作数组成的代码片段,可以计算出一个值。例如:

int result = (10 + 5) * 2;  // 表达式:(10 + 5) * 2

运算符的优先级决定了表达式中运算的执行顺序。以下是常见运算符的优先级(从高到低):

  1. 括号 ()
  2. 一元运算符(++, --, !, ~)
  3. 乘除取模(*, /, %)
  4. 加减(+, -)
  5. 移位(<<, >>)
  6. 关系运算符(<, >, <=, >=)
  7. 相等性(==, !=)
  8. 逻辑与 &、逻辑异或 ^、逻辑或 |
  9. 条件与 &&、条件或 ||
  10. 条件运算符 ?:
  11. 赋值运算符 =, +=, -= 等

2.2.3 常用运算符详解

算术运算符

int a = 10, b = 3;
int sum = a + b;      // 13
int difference = a - b; // 7
int product = a * b;   // 30
int quotient = a / b;  // 3 (整数除法)
int remainder = a % b; // 1 (取模)

关系运算符

bool isEqual = (a == b);      // false
bool isGreater = (a > b);     // true
bool isLessOrEqual = (a <= 10); // true

逻辑运算符

bool x = true, y = false;
bool andResult = x && y;    // false
bool orResult = x || y;     // true
bool notResult = !x;        // false

赋值运算符

int num = 10;
num += 5;   // 等同于 num = num + 5;
num *= 2;   // 等同于 num = num * 2;

条件运算符(三元运算符)

int age = 20;
string status = (age >= 18) ? "Adult" : "Minor";  // "Adult"

2.2.4 运算符重载

C# 允许对用户定义的类型重载运算符,使其支持自定义操作:

public class Vector
{
    public int X { get; set; }
    public int Y { get; set; }
    
    public static Vector operator +(Vector v1, Vector v2)
    {
        return new Vector { X = v1.X + v2.X, Y = v1.Y + v2.Y };
    }
}

// 使用重载的+运算符
Vector v1 = new Vector { X = 1, Y = 2 };
Vector v2 = new Vector { X = 3, Y = 4 };
Vector sum = v1 + v2;  // sum.X = 4, sum.Y = 6

2.2.5 表达式中的类型转换

在表达式中混合使用不同类型时,C# 会自动进行隐式转换或要求显式转换:

int i = 10;
double d = 3.14;
double result = i + d;  // 隐式转换int为double

decimal dec = (decimal)d;  // 显式转换double为decimal

2.2.6 最佳实践

  1. 使用括号明确运算顺序,提高代码可读性
  2. 避免过度复杂的表达式,可拆分为多个步骤
  3. 注意整数除法和浮点数除法的区别
  4. 谨慎使用运算符重载,确保语义清晰
  5. 注意隐式类型转换可能带来的精度损失

练习

  1. 编写一个表达式,计算圆的面积(半径r=5,π使用Math.PI)
  2. 创建一个包含运算符重载的复数类,支持加减运算
  3. 分析表达式 5 + 3 * 2 > 10 && 4 < 6 || true 的计算过程和结果
Last Updated:: 5/3/25, 11:01 PM