【超详细】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;//取模/取余数 1
string 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;//true
string 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 时返回 true | true && false 返回 false |
|| | 逻辑或,两个条件都为false时返回 false | true || false返回true |
! | 逻辑非,取反,true 转 false,false 转 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) |
后置++ | 先返回,后加1 | int a = 5; Console.WriteLine(a++); | 输出:5 (先输出 a 的值,再加 1) |
前置-- | 先减1,后返回 | int b = 10; Console.WriteLine(--b); | 输出:9 (b 先减 1,然后输出 9) |
后置-- | 先返回,后减1 | int 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,否则为 0。 | 1 & 1 = 1, 0 & 1 = 0, 1 & 0 = 0, 0 & 0 = 0 | int a = 5; int b = 3; int result = a & b; | 1 |
按位或(|) | 对两个数的每一对二进制位进行或操作,只有两个二进制位都是 0 时,结果为 0,否则为 1。 | 1 | 1 = 1, 0 | 1 = 1, 1 | 0 = 1, 0 | 0 = 0 | int a = 5; int b = 3; int result = a | b; | 7 |
按位异或(^) | 对两个数的每一对二进制位进行异或操作,当二进制位相同时,结果为 0,不同则结果为 1。 | 1 ^ 1 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 0 ^ 0 = 0 | int a = 5; int b = 3; int result = a ^ b; | 6 |
按位取反(~) | 将数值的每一位反转,0 变为 1,1 变为 0。 | ~a:将 a 的每一位取反 ~n = -(n+1) | int a = 5; int result = ~a; | -6 |
左移(<<) | 将数值的二进制位向左移动指定的位数,左移等于乘以 2 的移位数次方。 | a << n: 将 a 的二进制位左移 n 位。a << n = a * 2^n | int a = 5; int result = a << 2; | 20 |
右移(>>) | 将数值的二进制位向右移动指定的位数,右移等于除以 2 的移位数次方。对于有符号整数,符号位扩展。 | a >> n: 将 a 的二进制位右移 n 位。a >> n = a / 2^n | int 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 语句的执行 | 用于提前退出循环(for, while, do-while);用于退出 switch 语句 |
continue | 跳过当前循环中的剩余部分,开始下一次循环 | 用于跳过当前迭代,进入下一次循环 |
return | 返回方法并结束执行 | 用于方法中返回值,或结束 void 方法的执行 |
goto | 跳转到指定标签处 | 跳转到程序中的特定标签处,通常用于复杂的跳转逻辑 |
throw | 抛出异常,结束当前方法的执行 | 用于异常处理,抛出异常以转移控制权到异常处理器 |
好了,本次的分享到这里就结束啦,希望对你有所帮助~