C# 提供了许多运算符。 其中许多都受到内置类型的支持,可用于对这些类型的值执行基本操作。 这些运算符包括以下组:
- 算术运算符,将对数值操作数执行算术运算
- 比较运算符,将比较数值操作数
- 布尔逻辑运算符,将对 bool 操作数执行逻辑运算
- 位运算符和移位运算符,将对整数类型的操作数执行位运算或移位运算
- 相等运算符,将检查其操作数是否相等
通常可以重载这些运算符,也就是说,可以为用户定义类型的操作数指定运算符行为。
最简单的 C# 表达式是文本(例如整数和实数)和变量名称。 可以使用运算符将它们组合成复杂的表达式。 运算符优先级和结合性决定了表达式中操作的执行顺序。 可以使用括号更改由运算符优先级和结合性决定的计算顺序。
- c = a++: 先将 a 赋值给 c,再对 a 进行自增运算。
- c = ++a: 先将 a 进行自增运算,再将 a 赋值给 c 。
- c = a--: 先将 a 赋值给 c,再对 a 进行自减运算。
- c = --a: 先将 a 进行自减运算,再将 a 赋值给 c 。
- 口诀:看变量a的左边是什么,左边是变量则先赋值变量,左边是+-号,则先+-
- ,提供创建格式化字符串的便利语法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main()
//C# 程序的入口点是 Main 而不是 main。Main 方法必须是静态的(static),并且它的首字母必须大写。
{
var r = 2.3;
var message = $"The area of a circle with radius {r} is {Math.PI * r * r:F3}.";
//:F3 表示要将数值格式化为固定点数(fixed-point number),并保留小数点后三位。
//同理F8保留8位小数
Console.WriteLine(message);
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main()
/*static 关键字用于声明 Main 方法是静态的,
* 这意味着它属于类本身而不是类的任何特定实例。在 C# 程序中,
* 程序的入口点(即程序开始执行的地方)必须是一个静态的 Main 方法。
* 因此,你不能简单地将 static 关键字从 Main 方法的声明中去掉。*/
{
int[] numbers = { 2, 3, 4, 5 };
//将数组里的每个数变为自身平方并且赋值给新变量,Enumerable.Select 方法
var squaredNumbers = numbers.Select(n => n * n);
// 遍历并打印结果
foreach (var num in numbers)
{
Console.WriteLine($"平方前:\n{num}");
}
Console.WriteLine("平方后:");
foreach (var num in squaredNumbers)
{
Console.WriteLine(num);
}
Console.ReadKey();
/*
*/
}
}
}
逻辑异或运算符 ^
^
运算符计算操作数的逻辑异或(亦称为“逻辑 XOR”)。 如果 x
计算结果为 true
且 y
计算结果为 false
,或者 x
计算结果为 false
且 y
计算结果为 true
,那么 x ^ y
的结果为 true
。 否则,结果为 false
。 也就是说,对于 bool
操作数,^
运算符的计算结果与不等运算符 !=
相同。
即:ture 不等于 true ,结果假
true 不等于 假 ,结果真
Console.WriteLine(true ^ true); // output: False
Console.WriteLine(true ^ false); // output: True
Console.WriteLine(false ^ true); // output: True
Console.WriteLine(false ^ false); // output: False
对于整型数值类型的操作数,^
运算符计算其操作数的位逻辑异或。
可以这么理解,^两边的人是死敌,当他们意见不同时才正常,返回真;他们意见相同时,见鬼了,肯定假的,返回假^_^
if
语句
if
语句可采用以下两种形式中的任一种:
-
包含
else
部分的if
语句根据布尔表达式的值选择两个语句中的一个来执行,如以下示例所示:
switch语句
using System;
namespace SwitchExample
{
class Program
{
static void Main(string[] args)
{
int 数字 = 3; // 假设这表示星期三
switch (数字)
{
case 1:
Console.WriteLine("Monday");
Console.ReadKey();
break;
case 2:
Console.WriteLine("Tuesday");
Console.ReadKey();
break;
case 3:
Console.WriteLine("星期三");
Console.ReadKey();
break;
case 4:
Console.WriteLine("Thursday");
Console.ReadKey();
break;
case 5:
Console.WriteLine("Friday");
Console.ReadKey();
break;
case 6:
Console.WriteLine("Saturday");
Console.ReadKey();
break;
case 7:
Console.WriteLine("Sunday");
Console.ReadKey();
break;
default:
Console.WriteLine("无效数字");
Console.ReadKey();
break;
}
}
}
}
?:运算符
我们已经在前面的章节中讲解了 条件运算符 ? :,可以用来替代 if...else 语句。它的一般形式如下:
Exp1 ? Exp2 : Exp3;
其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。
? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。
简化一下
是否是真?真执行这个:假执行这个