【超详细】C#基础-基本运算、语句

目录

1.基本运算

(1)运算符

①赋值运算符

②算术运算符

③比较运算符

④逻辑运算符

⑤快捷运算符

⑥一元运算符

⑦位运算符

⑧三元运算符

(2)基本类型转换

①隐式转换

②显示转换

③Parse转换

④Conver类

⑤ToString

2.语句

(1)选择语句

①if语句

②switch语句

(2)循环语句

①for循环

②foreach

③while循环

④do-while循环

(3)跳转语句


       本篇文章来学习一下基本运算和语句。

1.基本运算

(1)运算符

①赋值运算符

       将右边的值赋值给左边变量

int a;
a = 3;

②算术运算符

       包括+、-、*、/、%(取模/余数),用于数值类型的两个数据进行算术运算。其中string类型可以使用+,意为字符串的拼接

int a,b,c;
a = 1;
b = 2;
c = a + b;
c = a - b;
c = a * b;
c = a / b;//取商 0
c = a % b;//取模/取余数 1string str = "Hello";
str = str + ",world!";//str="Hello,world!"

③比较运算符

       比较运算符用于比较两个值,并返回一个布尔值(true 或 false)包括>、<、>=、<=、==、!=。其中string类型可以使用==和!=,意为文本是否相同

运算符说明示例
==等于,判断两个值是否相等5 == 5 返回 true
!=不等于,判断两个值是否不等5 != 4 返回 true
>大于,判断左边的值是否大于右边5 > 3 返回 true
<小于,判断左边的值是否小于右边5 < 10 返回 true
>=大于等于,判断左边的值是否大于等于右边5 >= 5 返回 true
<=小于等于,判断左边的值是否小于等于右边3 <= 5 返回 true
int a = 5, b = 10;
bool result1 = a == b;//false
bool result2 = a != b;//true
bool result3 = a > b;//false
bool result4 = a < b;//true
bool result5 = a >= b;//false
bool result6 = a <= b;//truestring str1 = "Hello";
string str2 = "Hello";
string str3 = "hello";bool res1 = str1 == str2;//true
bool res2 = str1 == str2;//false,区分大小写string str4 = "hello";
string str5 = "HELLO";//比较两个字符串时忽略大小写,使用 String.Equals 方法
bool result = string.Equals(str4, str5, StringComparison.OrdinalIgnoreCase);
Debug.Log(result);//true,因为忽略大小写

④逻辑运算符

       逻辑运算符用于连接布尔值,判断多个条件是否同时成立

运算符说明示例
&&逻辑与,两个条件都为 true 时返回 truetrue && false 返回 false
||逻辑或,两个条件都为false时返回 falsetrue || false返回true
!逻辑非,取反,true 转 falsefalse 转 true!true 返回 false
bool condition1 = true;
bool condition2 = false;bool andResult = condition1 && condition2;//false
bool orResult = condition1 || condition2;//true
bool notResult = !condition1;//false

注意:
        短路逻辑,&&当第一个操作数为false时,不会判断第二个操作数,可以提高效率,避免不必要的计算;||当第一个操作数为true时,不会判断第二个操作数,可以将计算量大的条件往后放,从而提高性能

⑤快捷运算符

       快捷运算符用于在进行运算的同时,直接将运算结果赋值给变量。它们是简写的形式,使代码更加简洁。

运算符说明示例
+=加法赋值,将右边的值加到左边并赋值a += 3 等同于 a = a + 3
-=减法赋值,将右边的值从左边减去并赋值a -= 2 等同于 a = a - 2
*=乘法赋值,将左边的值乘以右边并赋值a *= 2 等同于 a = a * 2
/=除法赋值,将左边的值除以右边并赋值a /= 2 等同于 a = a / 2
%=取模赋值,将左边的值取模右边并赋值a %= 3 等同于 a = a % 3

⑥一元运算符

运算符描述示例结果
前置++先加1,后返回int a = 5; Console.WriteLine(++a);输出:6 (a 先加 1,然后输出 6)
后置++先返回,后加1int a = 5; Console.WriteLine(a++);输出:5 (先输出 a 的值,再加 1)
前置--先减1,后返回int b = 10; Console.WriteLine(--b);输出:9 (b 先减 1,然后输出 9)
后置--先返回,后减1int b = 10; Console.WriteLine(b--);输出:10 (先输出 b 的值,再减 1)
+表示正数int a = 5; Console.WriteLine(+a);输出:5 (没有改变 a 的值)
-将值取负int a = 5; Console.WriteLine(-a);输出:-5 (a 变为负值)
(type)强制类型转换,将数据转换为指定类型double a = 3.14; int b = (int)a;输出:3 (强制转换为 int)
!逻辑非,反转布尔值bool flag = true; Console.WriteLine(!flag);输出:false (反转布尔值)
~按位取反,反转二进制中的每一位int a = 5; Console.WriteLine(~a);

输出:-6 (转为二进制后,按位取反)

⑦位运算符

运算符运算描述运算规则示例代码输出
按位与(&对两个数的每一对二进制位进行与操作,只有两个二进制位都是 1 时,结果为 1,否则为 01 & 1 = 10 & 1 = 01 & 0 = 00 & 0 = 0int a = 5; int b = 3; int result = a & b;1
按位或(|)对两个数的每一对二进制位进行或操作,只有两个二进制位都是 0 时,结果为 0,否则为 11 | 1 = 1, 0 | 1 = 1, 1 | 0 = 1, 0 | 0 = 0int a = 5; int b = 3; int result = a | b;7
按位异或(^对两个数的每一对二进制位进行异或操作,当二进制位相同时,结果为 0,不同则结果为 11 ^ 1 = 00 ^ 1 = 11 ^ 0 = 10 ^ 0 = 0int a = 5; int b = 3; int result = a ^ b;6
按位取反(~将数值的每一位反转,0 变为 11 变为 0~a:将 a 的每一位取反
~n = -(n+1)
int a = 5; int result = ~a;-6
左移(<<将数值的二进制位向左移动指定的位数,左移等于乘以 2 的移位数次方。a << n a 的二进制位左移 n 位。a << n = a * 2^nint a = 5; int result = a << 2;20
右移(>>将数值的二进制位向右移动指定的位数,右移等于除以 2 的移位数次方。对于有符号整数,符号位扩展。a >> n a 的二进制位右移 n 位。a >> n = a / 2^nint a = 20; int result = a >> 2;5

⑧三元运算符

       三元运算符(也叫条件运算符)用于根据条件选择两个值中的一个。条件?结果1:结果2

int a = 5, b = 10;
int max = (a > b) ? a : b;//如果a > b为真,返回 a,否则返回 b
Debug.Log(max);//10

(2)基本类型转换

①隐式转换

       小数据类型自动转换为大数据类型,多种变量参与运算,结果自动向较大的类型提升

②显示转换

       大数据类型强制转换为小数据类型

③Parse转换

       其他类型转换为string类型,Parse 字符串->值类型,无法转换会抛异常,使用TryParse通过bool表达式配合使用,防止类型转换失败

④Conver类

       通用转换方法:Convert.ChangeType(值,Type类型)

⑤ToString

       任何类型都可以转换为string类型,ToString数据类型->字符串具体可以参考C#的数据类型转换

2.语句

(1)选择语句

①if语句

       注意else属于上一个if,书写格式如下:value可以是表达式、比较运算符、常数值

if(value)
{
    //语句1;
}
else
{
    //语句2;
}

int a = 88;
if (a >= 0)
{Debug.Log("a为非负数");
}
else
{Debug.Log("a为负数");
}

②switch语句

       switch表达式中的变量可以是整型、string、bool、char、枚举或相应可以为null的类型,必须有一个定值,case标签后是常数值,不必连续,也不必按特定顺序排序,但不能相同,default标签可选,指其他的结果,break是在case与case之间中断程序。书写格式如下:

switch(value)
{
    case 常数值1:
    break;
    case 常数值2:
    break;
    default:
    break;
}

int number = 1;//假设限定 number 为 1 到 3 之间的数字
switch (number)
{case 1:Debug.Log("number为 1");break;case 2:Debug.Log("number为 2");break;case 3:Debug.Log("number为 3");break;default:Debug.Log("number无效,number 为 1 到 3 之间的数字");break;
}

注意:

       if-else和switch-case都可以实现多路分支,if-else实现两路、三路比较方便,switch-case实现三路以上分支结构更清晰,而且case标签必须是定值,所以不适合做范围判断

(2)循环语句

①for循环

       做预定次数的循环

for (int i = 1; i <= 5; i++)
{Debug.Log(i);
}

②foreach

       foreach 是C#中用于遍历集合或数组的语法,提供了一种简洁且安全的方式来访问集合中的每个元素,而无需使用索引。与for循环不同,foreach不需要手动控制循环变量的增减,它会自动迭代集合或数组中的每个元素。书写格式如下:

foreach (var item in collection)
{
         //操作语句
}

item:集合或数组中的当前元素。

collection:要遍历的集合或数组。

var:一个类型推断关键字,编译器会自动推断item的类型。也可以显式指定类型,如int或string。

int[] numbers = { 1, 2, 3, 4, 5 };
foreach (var number in numbers)
{Debug.Log(number);
}

③while循环

       满足条件就进入循环

int i = 1;
while (i <= 5)
{Debug.Log(i);i++;
}

④do-while循环

       至少执行一次循环

int i = 1;
do
{Debug.Log(i);i++;
}
while (i <= 5);

(3)跳转语句

       用于将控制转移给另一段代码

跳转语句作用使用场景
break终止循环(退出最近的循环体)或 switch 语句的执行用于提前退出循环(forwhiledo-while);用于退出 switch 语句
continue跳过当前循环中的剩余部分,开始下一次循环用于跳过当前迭代,进入下一次循环
return返回方法并结束执行用于方法中返回值,或结束 void 方法的执行
goto跳转到指定标签处跳转到程序中的特定标签处,通常用于复杂的跳转逻辑
throw抛出异常,结束当前方法的执行用于异常处理,抛出异常以转移控制权到异常处理器

       好了,本次的分享到这里就结束啦,希望对你有所帮助~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/60060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WRF-Urban】URBPARM.TBL参数解释及内容

【WRF-Urban】URBPARM.TBL参数解释及内容 URBPARM.TBL参数解释URBPARM.TBL参考 参考WRF-Urban教程-Urban Canopy Model URBPARM.TBL参数解释 各个城市相应的城市参数差异很大&#xff08;例如&#xff0c;有些城市的道路可能很宽但建筑物很矮&#xff0c;而其他城市的道路可…

DBeaver 连接 OceanBase Oracle 租户

DBeaver 是一款通用的数据库工具软件&#xff0c;支持任何具有JDBC驱动程序的数据库。DBeaver 需要 Java 运行环境的支持。截稿时 DBeaver 24.0.0 版本默认提供的 OceanBase 驱动是连接 MySQL 的&#xff0c;想连接 Oracle 租户需要新建一个驱动器使用。 下载数据库驱动包 1、…

使用 Prompt API 与您的对象聊天

tl;dr&#xff1a;GET、PUT、PROMPT。现在&#xff0c;可以使用新的 PromptObject API 仅使用自然语言对存储在 MinIO 上的对象进行总结、交谈和提问。在本文中&#xff0c;我们将探讨这个新 API 的一些用例以及代码示例。 赋予动机&#xff1a; 对象存储和 S3 API 的无处不在…

23种设计模式-访问者(Visitor)设计模式

文章目录 一.什么是访问者模式&#xff1f;二.访问者模式的结构三.访问者模式的应用场景四.访问者模式的优缺点五.访问者模式的C实现六.访问者模式的JAVA实现七.代码解释八.总结 类图&#xff1a; 访问者设计模式类图 一.什么是访问者模式&#xff1f; 访问者模式&#xff08;…

【开源免费】基于Vue和SpringBoot的在线考试系统(附论文)

本文项目编号 T 624 &#xff0c;文末自助获取源码 \color{red}{T624&#xff0c;文末自助获取源码} T624&#xff0c;文末自助获取源码 网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现…

【H2O2|全栈】MySQL的云端部署

目录 前言 开篇语 准备工作 MySQL移除 为什么需要移除&#xff1f; 移除操作 Yum仓库 yum简介 rpm安装 yum库安装 MySQL安装 使用yum安装 开机自启动 检查运行状态 MySQL配置 初始密码 ​编辑登录 修改root密码 退出MySQL 字符集配置 重启数据库 结束语 …

DAY30|贪心算法Part04|LeetCode:452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

目录 LeetCode:452. 用最少数量的箭引爆气球 基本思路 C代码 LeetCode:435. 无重叠区间 基本思路 C代码 LeetCode:763.划分字母区间 基本思路 C代码 LeetCode:452. 用最少数量的箭引爆气球 力扣代码链接 文字讲解&#xff1a;LeetCode:452. 用最少数量的箭引爆气球 视…

Enterprise Architect 16 下载、安装与无限30天操作

文章目录 Enterprise Architect 16 简介&#xff08;一&#xff09;支持多种建模语言和标准&#xff08;二&#xff09;强大的版本控制、协作和文档管理功能&#xff08;三&#xff09;增强的技术和用户体验&#xff08;四&#xff09;高级功能和扩展性 一&#xff0c;下载软件…

31.3 XOR压缩和相关的prometheus源码解读

本节重点介绍 : xor 压缩value原理xor压缩过程讲解xor压缩prometheus源码解读xor 压缩效果 xor 压缩value原理 原理:时序数据库相邻点变化不大&#xff0c;采用异或压缩float64的前缀和后缀0个数 xor压缩过程讲解 第一个值使用原始点存储计算和前面的值的xor 如果XOR值为0&…

解决 IDEA 修改代码重启不生效的问题

前言 在使用 IntelliJ IDEA 进行 Java 项目开发时&#xff0c;有时会遇到一个令人头疼的问题&#xff1a;修改了代码后&#xff0c;重启服务却发现更改没有生效。通常情况下&#xff0c;解决这个问题需要通过 Maven 的 clean 和 compile 命令来强制重新编译&#xff0c;但这显…

java 根据 pdf 模板带图片文字生成pdf文件

在现代应用开发中,自动生成包含动态内容的 PDF 文档在电子发票、合同生成、表单填充等场景中有着广泛的应用。本文将介绍如何使用 iText 库动态填充 PDF 模板字段,并在指定位置插入签名和公章图片。 项目需求 假设我们有一个 PDF 模板文件,包含表单字段,如用户姓名、地址…

MTK主板定制_联发科主板_MTK8766/MTK8768/MTK8788安卓主板方案

主流市场上的MTK主板通常采用联发科的多种芯片平台&#xff0c;如MT8766、MT6765、MT6762、MT8768和MT8788等。这些芯片基于64位Cortex-A73/A53架构&#xff0c;提供四核或八核配置&#xff0c;主频可达2.1GHz&#xff0c;赋予设备卓越的计算与处理能力。芯片采用12纳米制程工艺…

Windows仿macOS?看这一篇就够了

如果你有任何关于Windows仿macOS的问题&#xff0c;可加入942644281 &#xff08;QQ群&#xff09; Date9.20更新&#xff1a;增加功能按键左移部分Date9.16更新&#xff1a;增加了大多数资源的网盘链接Date9.15更新&#xff1a;增加StartAllBack&#xff0c;资源管理器调整部…

无法下载element-admin的依赖无法运行

目录 无法下载element-admin的依赖偷懒方法完美方法 运行element-admin错误 之前在下载element-admin时遇到了多多少少的问题 无法下载element-admin的依赖 偷懒方法 开始是从github下载源码后安装依赖时在与tui-editor相关的依赖时就会卡死&#xff0c;然后报错&#xff0c…

基于Java Springboot幼儿园管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

新一代API开发工具,让API调试更快 更简单

新一代API开发工具 代理调试 请求测试一站式解决方案 Reqable Fiddler Charles Postman, 让API调试更快 &#x1f680; 更简单 &#x1f44c; 直接上下载地址 根据系统,下载对应的版本即可 https://reqable.com/zh-CN/download/

Python | Leetcode Python题解之第564题寻找最近的回文数

题目&#xff1a; 题解&#xff1a; class Solution:def nearestPalindromic(self, n: str) -> str:m len(n)candidates [10 ** (m - 1) - 1, 10 ** m 1]selfPrefix int(n[:(m 1) // 2])for x in range(selfPrefix - 1, selfPrefix 2):y x if m % 2 0 else x // 10…

爬虫——数据解析与提取

第二节&#xff1a;数据解析与提取 在网络爬虫开发中&#xff0c;获取网页内容&#xff08;HTML&#xff09;是第一步&#xff0c;但从这些内容中提取有用的数据&#xff0c;才是爬虫的核心部分。HTML文档通常结构复杂且充满冗余信息&#xff0c;因此我们需要使用高效的解析工…

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan 背景 在使用Ant Design Vue 开发数据表格时&#xff0c;我们常常会遇到需要合并单元格的需求。 比如&#xff0c;某些字段的值可能会在多行中重复出现&#xff0c;而我们希望将这些重复的单元格合并为…

RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)

文章目录 RabbitMQ教程&#xff1a;发布/订阅模式&#xff08;Publish/Subscribe&#xff09;&#xff08;三&#xff09;一、引言二、简介三、准备工作3.1 说明3.2 生成项目 四、实战4.1 交换机&#xff08;Exchanges&#xff09;4.2 临时队列&#xff08;Temporary Queues&am…