当前位置: 首页 > article >正文

C#运算符

🧠 一、C# 运算符列表(按类别分类)

类别运算符
一元运算符+, -, ++, --, !, ~, (T) x
算术运算符+, -, *, /, %
赋值运算符=, +=, -=, *=, /=, %=, &=, `
比较/关系运算符==, !=, <, >, <=, >=
逻辑/布尔运算符&&, `
按位运算符&, `
条件运算符?:(三元)
空相关运算符??, ??=, ?., ?[]
Lambda 表达式=>
对象创建new
访问运算符., [], (), ->(用于指针)
类型信息typeof, is, as
范围与索引^, ..

✅ 二、详细讲解 + 示例代码

1. 一元运算符(Unary Operators)

int a = 5;
int b = -a;     // 负号
bool flag = true;
Console.WriteLine(!flag);  // false

2. 增减运算符(Increment / Decrement)

int x = 5;
Console.WriteLine(x++);  // 输出 5,之后 x=6
Console.WriteLine(++x);  // 输出 7,先加再输出

3. 强制转换运算符(Cast Operator)

double d = 9.99;
int i = (int)d;  // 显式转换,结果为 9

4. 求反运算符(Logical NOT 和 Bitwise NOT)

bool isTrue = true;
Console.WriteLine(!isTrue);  // falsebyte b = 0b1010_1010;
Console.WriteLine(~b);       // 按位取反

5. 赋值运算符(Assignment Operators)

int num = 10;
num += 5;   // 等价于 num = num + 5 → 15

6. 字符串连接运算符(Concatenation)

string greeting = "Hello" + ", World!";

7. 算术运算符(Arithmetic Operators)

int sum = 10 + 5;
int remainder = 10 % 3;  // 余数 1

8. 布尔逻辑运算符(Logical Operators)

bool result1 = true && false;  // false
bool result2 = true || false;  // true

9. 关系运算符(Relational Operators)

int age = 20;
Console.WriteLine(age > 18);  // true

10. 按位运算符(Bitwise Operators)

int x = 5;  // 0b0101
int y = 3;  // 0b0011
int z = x & y;  // 按位与:0b0001 → 1

11. 复合赋值运算符(Compound Assignment)

int total = 100;
total -= 20;  // total = 80

12. new 运算符(创建对象)

List<string> list = new List<string>();
Person p = new Person { Name = "Tom" };

13. 访问运算符(Member Access)

person.Name
array[index]

14. 索引和范围运算符(Index and Range)

string s = "HelloWorld";
char c = s[^1];            // 最后一个字符 'd'
string sub = s[6..^0];     // 从索引6开始到最后:"World"

15. 类型信息(Type Information)

Console.WriteLine(typeof(string));  // System.String
object obj = 123;
if (obj is int) Console.WriteLine("是整数");

16. 运算符优先级(Operator Precedence)

优先级运算符
x.y, f(x), a[i], new, typeof
!, ~, ++x, --x, (T)x
*, /, %
+, -
<<, >>
<, >, <=, >=
==, !=
&
^
`
&&
`
?:
=, op=

✅ 使用括号 () 可以改变优先级顺序。

17. 关联规则(Associativity)

  • 大多数运算符是左结合,如 a + b + c
  • 但赋值运算符是右结合a = b = c 等价于 a = (b = c)
  • 三元运算符也是右结合

18. 空条件运算符(Null-Conditional Operators)

string name = person?.Name;  // 如果 person 为 null,则返回 null
int? length = person?.Name?.Length;

19. 空值合并运算符(Null Coalescing Operator)

string message = null;
string result = message ?? "默认消息";  // 如果 message 为 null,用默认值

20. 空折叠赋值运算符(Null-Coalescing Assignment)

string text = null;
text ??= "初始值";  // text 为 null,所以赋值

21. 三元运算符(Ternary Conditional Operator)

int max = a > b ? a : b;
string result = score >= 60 ? "及格" : "不及格";

22. Lambda 运算符(Lambda Expression)

Func<int, int> square = x => x * x;
list.Where(x => x > 10);

🧮 三、实战练习:计算素数(Prime Numbers)

using System;class Program
{static void Main(){Console.Write("请输入一个正整数:");string input = Console.ReadLine();if (int.TryParse(input, out int n) && n > 1){bool isPrime = true;for (int i = 2; i <= Math.Sqrt(n); i++){if (n % i == 0){isPrime = false;break;}}Console.WriteLine($"{n}{(isPrime ? "质数" : "非质数")}");}else{Console.WriteLine("输入无效,请输入大于 1 的整数!");}}
}

🎯 项目名称:C# 运算符综合练习器

功能说明:

这个程序会引导用户输入数据,并演示以下内容:

  • 基本算术、逻辑、关系、位运算
  • 空值处理(??, ?., ??=
  • 三元条件运算符
  • Lambda 表达式
  • 类型转换与类型检查
  • 索引与范围操作
  • 创建对象(new

✅ 完整代码模板(Program.cs)

using System;class Program
{// 自定义类用于测试 new 和访问运算符class Person{public string Name { get; set; }public int Age { get; set; }public override string ToString(){return $"Name: {Name}, Age: {Age}";}}static void Main(){Console.WriteLine("=== C# 运算符综合练习 ===\n");// 1. 算术运算符int a = 20, b = 7;Console.WriteLine($"加法: {a} + {b} = {a + b}");Console.WriteLine($"取模: {a} % {b} = {a % b}");// 2. 一元运算符int c = 5;Console.WriteLine($"\n前置自增: ++{c} = {++c}");Console.WriteLine($"后置自减: {c}-- = {c--}");// 3. 关系运算符Console.WriteLine($"\n{a} > {b} ? {a > b}");Console.WriteLine($"{a} == {b} ? {a == b}");// 4. 逻辑运算符bool flag1 = true, flag2 = false;Console.WriteLine($"\nflag1 && flag2 ? {flag1 && flag2}");Console.WriteLine($"!flag2 ? {!flag2}");// 5. 按位运算符byte x = 0b1010_1010;Console.WriteLine($"\n按位取反 ~x = {Convert.ToString(~x, 2)}");Console.WriteLine($"x << 1 = {x << 1}");// 6. 三元运算符string result = (a > b) ? "a 大于 b" : "a 不大于 b";Console.WriteLine($"\n三元判断结果: {result}");// 7. 空值相关运算符string str1 = null;string str2 = "默认文本";Console.WriteLine($"\n空合并 ?? : {str1 ?? str2}");str1 ??= "首次赋值";Console.WriteLine($"空折叠赋值 ??= : {str1}");Person person = null;Console.WriteLine($"安全访问 ?. : {person?.ToString() ?? "person 为 null"}");// 8. 类型信息和强制转换object obj = 123;if (obj is int){int num = (int)obj;Console.WriteLine($"\n强制转换 (int)obj → {num}");}// 9. 范围和索引string text = "HelloWorld";Console.WriteLine($"\n字符串索引 ^1: {text[^1]}");Console.WriteLine($"子串范围 ..^5: {text[..^5]}");// 10. Lambda 表达式Func<int, int> square = x => x * x;Console.WriteLine($"\nLambda 计算平方: square(5) = {square(5)}");// 11. new 运算符Person p = new Person { Name = "Alice", Age = 25 };Console.WriteLine($"\nnew 创建对象: {p}");Console.WriteLine("\n按任意键退出...");Console.ReadKey();}
}

📋 示例运行输出:

=== C# 运算符综合练习 ===加法: 20 + 7 = 27
取模: 20 % 7 = 6前置自增: ++5 = 6
后置自减: 6-- = 620 > 7 ? True
20 == 7 ? Falseflag1 && flag2 ? False
!flag2 ? True按位取反 ~x = 1111111111111111111111111010101 (取决于平台)
x << 1 = 170三元判断结果: a 大于 b空合并 ?? : 默认文本
空折叠赋值 ??= : 首次赋值安全访问 ?. : person 为 null强制转换 (int)obj → 123字符串索引 ^1: d
子串范围 ..^5: HelloLambda 计算平方: square(5) = 25new 创建对象: Name: Alice, Age: 25按任意键退出...

相关文章:

C#运算符

&#x1f9e0; 一、C# 运算符列表&#xff08;按类别分类&#xff09; 类别运算符一元运算符, -, , --, !, ~, (T) x算术运算符, -, *, /, %赋值运算符, , -, *, /, %, &, 比较/关系运算符, !, <, >, <, >逻辑/布尔运算符&&, 按位运算符&, 条件运…...

五月份嵌入式面试总结

目录 1、札记 1.1、芯片的bring up 主要做哪些工作&#xff1a; 2、Linux驱动八股文 中断与同步互斥 2.1.1 内核同步互斥的几种方式 2.1.2 互斥锁和自旋锁的区别 2.1.3 spin_lock 和 spin_lock_irqsave 的区别 2.1.4 进程上下文和中断上下文有什么区别 2.1.5 进行上下…...

数据库行业竞争加剧,MySQL 9.3.0 企业版开始支持个人下载

最新发现&#xff0c;Oracle 官方网站放开了 MySQL 9.3.0 企业版下载链接&#xff0c;个人用户也可以免费下载&#xff0c;不过只能用于学习、开发或者原型测试&#xff0c;不能用于生产环境。 通常我们都是下载 MySQL 社区版&#xff0c;不过 MySQL 企业版可以支持更多高级功能…...

Python实例题:Django搭建简易博客

目录 Python实例题 题目 1. 创建 Django 项目和应用 2. 配置项目 3. 设计模型 blog_app templates blog_app post_list.html admin.py models.py urls.py views.py blog_project urls.py 代码解释 models.py&#xff1a; admin.py&#xff1a; urls.py&…...

Tcping详细使用教程

Tcping详细使用教程 下载地址 https://download.elifulkerson.com/files/tcping/0.39/在windows环境下安装tcping 在以上的下载地中找到exe可执行文件&#xff0c;其中tcping.exe适用于32位Windows系统&#xff0c;tcping64.exe适用于64位Windows操作系统。 其实tcping是个…...

PyCharm 快捷键指南

PyCharm 快捷键指南 常用编辑快捷键 代码完成&#xff1a;Ctrl Space 提供基本的代码完成选项&#xff08;类、方法、属性&#xff09;导入类&#xff1a;Ctrl Alt Space 快速导入所需类语句完成&#xff1a;Ctrl Shift Enter 自动结束代码&#xff08;如添加分号&#…...

如何更改远程桌面连接的默认端口?附外网访问内网计算机方法

远程连接端口根据协议和场景不同有所差异&#xff0c;以下是常见远程连接端口的设置及修改方法&#xff0c;同时附外网访问内网计算机操作。 一、Windows远程桌面默认端口 ‌默认端口‌&#xff1a;3389&#xff08;TCP协议&#xff09;&#xff0c;用于Windows远程桌面服务&…...

【GAN网络入门系列】一,手写字MINST图片生成

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 博主简介&#xff1a;努力学习的22级本科生一枚 &#x1f31f;​&#xff1b;探索AI算法&#xff0c;C&#xff0c;go语言的世界&#xff1b;在迷茫中寻找光芒…...

ubuntu22鼠键失灵恢复记录笔记chatgpt解决

ChatGPT 说&#xff1a; 你提到“Ubuntu 22 鼠键失灵”&#xff0c;这个问题可能涉及以下几方面&#xff1a; &#x1f9ed; 先确认问题 是鼠标问题还是键盘问题&#xff0c;还是触控板&#xff1f; “鼠键”一般理解为“鼠标键”&#xff0c;请确认你是指鼠标左键/右键失灵&a…...

智能呼入:云蝠大模型赋能政府热线

政府热线作为连接政府与民众的重要桥梁&#xff0c;提升智能化水平&#xff0c;成为政府热线亟待解决的问题。 大模型呼入 大模型呼入技术基于先进的自然语言处理和机器学习算法&#xff0c;能够实现对海量语音数据的处理和理解。通过构建大规模的语言模型&#xff0c;系统可…...

STM32 ADC+DMA+TIM触发采样实战:避坑指南与源码解析

知识点1【TRGO的介绍】 1、TRGO的概述 TRGO&#xff1a;Trigger Output&#xff08;触发输出&#xff09;&#xff0c;是定时器的一种功能。 它可以作为外设的启动信号&#xff0c;比如ADC转换&#xff0c;DAC输出&#xff0c;DMA请求等。 对于ADC来说&#xff0c;可以通过…...

(1-4)Java Object类、Final、注解、设计模式、抽象类、接口、内部类

目录 1. Object类 1.1 equals 1.2 toString&#xff08;&#xff09; 2.final关键字 3.注解 4. 设计模式 4.1 单例模式 4.1.1 饿汉式 4.1.3 饿汉式 VS 懒汉式 5. 抽象类&抽象方法 6. 接口 7.内部类 7.1 成员内部类 7.2 静态内部类 7.3 方法内部类 7.4 匿名内…...

在服务器上安装AlphaFold2遇到的问题(3)_cat: /usr/include/cudnn_version.h: 没有那个文件或目录

[rootlocalhost ~]# cat /usr/include/cudnn_version.h cat: /usr/include/cudnn_version.h: 没有那个文件或目录这个错误表明系统找不到 cudnn_version.h 头文件&#xff0c;说明 cuDNN 的开发文件&#xff08;头文件&#xff09;没有正确安装。以下是完整的解决方案&#xff…...

实验-实现向量点积-RISC-V(计算机组成原理)

目录 一、实验内容 二、实验步骤 三、源代码 四、实现效果 五、实验环境 六、实验小结与思考 一、实验内容 首先&#xff0c;我们用一个简单的“向量点积”运算作为热身。你将拿到一个不完整的汇编代码“task2-向量点积”&#xff0c;我们的目标是按照C语言描述的功能&a…...

5.16本日总结

一、英语 背诵list30&#xff0c;复习list1 二、数学 学习14讲部分内容&#xff0c;订正30讲13讲题目 三、408 学习计网5.3知识点&#xff0c;完成5.1&#xff0c;5.2题目并订正 四、总结 高数对于基本定义概念类题目掌握不好&#xff0c;做题时往往不会下手&#xff0c…...

描述性统计工具 - AxureMost 落葵网

描述性统计工具是用于汇总和分析数据&#xff0c;以更好地了解数据特征的工具1。以下是一些常见的描述性统计工具简介&#xff1a; 描述性统计工具 Excel 基本统计函数&#xff1a;提供了丰富的函数用于计算描述性统计量。例如&#xff0c;AVERAGE 函数用于计算平均值&#xf…...

【AI学习】AI大模型技术发展研究月报的生成提示词

AI大模型技术发展研究月报生成提示词 请输出AI大模型技术发展研究月报&#xff0c;要求如下&#xff1a; —————————— 任务目标 在今天&#xff08;{{today}}&#xff09;往前连续 30 天内&#xff0c;检索已正式公开发表的、与AI大模型&#xff08;参数量 ≥10B&am…...

麒麟桌面系统文件保险箱快捷访问指南:让重要文件夹一键直达桌面!

往期文章链接&#xff1a;统信操作系统自定义快捷键配置音量调节功能指南 Hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇麒麟桌面操作系统上配置文件保险箱内文件夹桌面快捷方式的文章&#xff0c;欢迎大家分享点赞&#xff0c;点个在看和关注吧&#xff01;在日常…...

LearnOpenGL --- 你好三角形

你好&#xff0c;三角形的课后练习题 文章目录 你好&#xff0c;三角形的课后练习题一、创建相同的两个三角形&#xff0c;但对它们的数据使用不同的VAO和VBO 一、创建相同的两个三角形&#xff0c;但对它们的数据使用不同的VAO和VBO #include <glad/glad.h> #include &…...

从硬件角度理解“Linux下一切皆文件“,详解用户级缓冲区

目录 前言 一、从硬件角度理解"Linux下一切皆文件" 从理解硬件是种“文件”到其他系统资源的抽象 二、缓冲区 1.缓冲区介绍 2.缓冲区的刷新策略 3.用户级缓冲区 这个用户级缓冲区在哪呢&#xff1f; 解释关于fork再加重定向“>”后数据会打印两份的原因 4.内核缓冲…...

【第76例】IPD流程实战:华为业务流程架构BPA进化的4个阶段

目录 简介 第一个阶段,业务流程架构BPA1.0 第二个阶段,业务流程架构BPA2.0 BPA3.0、4.0 作者简介 简介 不管业务是复杂还是简单,企业内外的所有事情、所有业务都最终会归于流程。 甚至是大家经常说的所谓的各种方法论,具体的落脚点还是在流程上。 比如把大象放进冰…...

游戏站的几种形式

游戏站点的主要形式&#xff1a;单品游戏站、游戏盒子站与单类型游戏盒子站 随着互联网的普及和游戏产业的快速发展&#xff0c;游戏站点作为玩家获取游戏资源和信息的重要平台&#xff0c;呈现出多种形式。本文将分析三种常见的游戏站点形式&#xff1a;单品游戏站、游戏盒子站…...

OpenCV 图像透视变换详解

在计算机视觉领域&#xff0c;图像的视角问题常常会影响后续的分析与处理。例如&#xff0c;从倾斜角度拍摄的文档、带有畸变的场景图像等&#xff0c;都需要通过特定的方法进行矫正。OpenCV 作为计算机视觉领域的重要库&#xff0c;提供了强大的图像透视变换功能&#xff0c;能…...

AI日报 - 2024年5月16日

&#x1f31f; 今日概览 (60秒速览) ▎&#x1f916; 大模型前沿 | OpenAI推出GPT-4.1及mini版&#xff0c;专为编码优化&#xff1b;Google DeepMind发布AlphaEvolve&#xff0c;Gemini驱动算法发现。 GPT-4.1提升编码效率与指令遵循&#xff0c;AlphaEvolve在矩阵乘法、数学问…...

Ubuntu 更改 Nginx 版本

将 1.25 降为 1.18 先卸载干净 # 1. 完全卸载当前Nginx sudo apt purge nginx nginx-common nginx-core# 2. 清理残留配置 sudo apt autoremove sudo rm -rf /etc/apt/sources.list.d/nginx*.list修改仓库地址 # 添加仓库&#xff08;通用稳定版仓库&#xff09; codename$(…...

Python requests GET 报错:ChunkedEncodingError

问题 在实际项目中遇到的这样一个问题&#xff1a;通过Python GET从服务器请求url列表&#xff0c;因为是公司内部数据&#xff0c;知道大概多少条数据&#xff0c;所以直接一次请求500条。平稳运行了一段时间之后&#xff0c;突然某天这个GET请求报错了… response request…...

RabbitMQ是什么?应用场景有哪些?

RabbitMQ 是一款开源的消息代理中间件,基于 AMQP(高级消息队列协议)实现,用于在分布式系统中进行异步通信和消息传递。它通过将消息的发送者和接收者解耦,提高了系统的可扩展性、可靠性和灵活性。 核心特点 多协议支持:不仅支持 AMQP,还兼容 STOMP、MQTT 等多种消息协议…...

打造智能化军工软件工厂,破解版本管理难题

在数字化浪潮席卷全球的当下&#xff0c;军工行业正经历着前所未有的软件工业化转型。作为这一进程的核心支撑&#xff0c;软件工厂模式正在重塑军工领域的研发体系。然而&#xff0c;传统版本管理方式已难以适应现代军工软件研发的复杂需求&#xff0c;成为制约行业发展的关键…...

SpringbBoot nginx代理获取用户真实IP

为了演示多级代理场景&#xff0c;我们分配了以下服务器资源&#xff1a; 10.1.9.98&#xff1a;充当客户端10.0.3.137&#xff1a;一级代理10.0.4.105&#xff1a;二级代理10.0.4.129&#xff1a;三级代理10.0.4.120&#xff1a;服务器端 各级代理配置 以下是各级代理的基本配…...

allure报告自定义logo和名称

根据pytest框架&#xff0c;做自动化测试的时候&#xff0c;选择的是allure测试报告&#xff0c;这个报告是目前所有报告中功能最强大最好用的测试报告之一 我们在使用这个测试报告的时候&#xff0c;怎么样去把allure的logo和名称替换成自己公司或者自己的logo呢&#xff1f;…...