Parse与Tryparse:字符串转值类型:
把字符串转成数字、布尔等 “值类型” 时用这两个方法,区别在于错误处理:
string s = "123";
int num = int.Parse(s); // 正确:123
TryParse方法:更安全,转换失败时不会报错,而是返回 false,并通过 out 参数返回默认值(比如整数默认 0)。适合用户输入场景(用户可能输入错误内容)。
csharp
string input = "abc"; // 无法转成整数
int result;
bool success = int.TryParse(input, out result);
// success 是 false,result 是 0(整数默认值)
总结:不同类型之间转换是为了满足运算或逻辑需求(比如字符串转数字才能计算)。
- Convert 类是通用工具,支持大多数直接转换。
- ToString() 是 “任何类型转字符串” 的标准方法,支持格式化。
- 字符串转值类型时,优先用 TryParse(避免程序崩溃),确定格式正确时可用 Parse。
- 特殊类型(如 bool 和 char)可能需要通过中间类型间接转换。
算数运算符
算数运算符包括二元运算符(+、-、*、/、%)和一元运算符(++、--),主要用于数值计算或特定类型拼接/自增自减
二元运算符:+、-、*、/、%
核心功能:+加法运算或字符拼接、-减法运算、*乘法运算、/除法运算、%取余运算
- 数字相加:结果类型遵循 "向上兼容" 原则(小范围类型向大范围类型转换)
- byte + byte → 结果为 int(示例:255+255=510,类型为int)
- long + long → 结果为 long
- int + long → 结果为 long(int 自动转换为 long)
- float + float → 结果为 float
- double + float → 结果为 double(float 自动转换为 double)
- char + char → 结果为 int(计算 ASCII 码值之和,示例:'a'+'b'=97+98=195)
- char + int → 结果为 int;char + float → 结果为 float
- 字符串拼接:若 + 两边有一个为字符串,则结果为字符串拼接
- 字符串 + 字符串:直接拼接(示例:"123"+"456"="123456")
- 字符串 + 数字 / 字符:自动转换为字符串后拼接(示例:"123"+456="123456")
- 不支持的操作:bool + bool 错误(布尔类型不能相加)
-、*、/运算符适用类型(int、long、float、double、char等)
特殊规则:
int / int 结果为整数(自动舍弃小数部分,示例:456/123=3)
小数与整数运算结果为小数(示例:123.456f - 456 = -332.544f)
不支持的操作:bool 类型、字符串类型之间不能使用
(3)%(取余)运算符
规则:
除数 > 被除数 → 结果为余数(示例:10%6=4)
除数 < 被除数 → 结果为被除数本身(示例:100000%2000000000=100000)
支持小数运算(示例:10.5f%2.2f≈1.7f)
禁止除数为 0(会报错)
2. 一元运算符(++、--)
作用:变量自身加 1(++)或减 1(--)
位置差异:
前置(++x/--x):先更新变量值,再使用变量
后置(x++/x--):先使用变量,再更新值
int a = 10;
Console.WriteLine(a++ + ++a); // 10(先使用a) + 12(先++a) → 22
Console.WriteLine(a); // 12(执行后a最终为12)
二、关系运算符
种类:<、>、<=、>=、==、!=(均为二元运算符)
结果类型:均返回 bool(true 或 false)
适用场景:
-
- <、>、<=、>=:仅支持数字类型(比较数值大小)
- ==、!=:支持数字类型(比较值是否相等)和字符串类型(比较内容是否相同)
int a = 10;
float b = 10.0f;
Console.WriteLine(a == b); // true(数值相等)
Console.WriteLine("abc" != "def"); // true(字符串内容不同)
类型范围溢出:运算结果可能超出原类型范围(如 int 最大值 2147483647,2000000000+1000000000 会溢出),需提前考虑类型选择
强制类型转换:小范围类型接收大范围结果时需显式转换(如 byte = (byte)(byte1 + byte2)),但可能丢失精度
字符串拼接优先级:+ 作为拼接符时,若左侧为字符串,右侧所有内容都会被转换为字符串(如 "a"+1+2 = "a12")
int num = 10;
+=
num += 5; // 等价于 num = num + 5 → 结果:15
num -= 3; // 等价于 num = num - 3 → 结果:12 //给num重新赋值
num *= 2; // 等价于 num = num * 2 → 结果:24
num /= 4; // 等价于 num = num / 4 → 结果:6(整数除法截断)
num %= 5; // 等价于 num = num % 5 → 结果:1
左移赋值(<<=)和右移赋值(>>=)
int x = 8; // 二进制:1000
x <<= 2; // 左移2位 → 二进制:100000 → 结果:32
x >>= 1; // 右移1位 → 二进制:10000 → 结果:16
按位与赋值(&=)、按位或赋值(|=)、按位异或赋值(^=)
int a = 6; // 二进制:0110
int b = 3; // 二进制:0011
a &= b; // 按位与后赋值 → 0010 → 结果:2
a |= b; // 按位或后赋值 → 0011 → 结果:3
a ^= b; // 按位异或后赋值 → 0000 → 结果:0
运算符 等价形式 功能说明
+= a += b → a = a + b 将变量与右侧值相加后赋值给自己
-= a -= b → a = a - b 将变量与右侧值相减后赋值给自己
*= a *= b → a = a * b 将变量与右侧值相乘后赋值给自己
/= a /= b → a = a / b 将变量与右侧值相除后赋值给自己
%= a %= b → a = a % b 将变量与右侧值取余后赋值给自己
与、或、非、异或的用法:
逻辑与(&&)“从严”、逻辑或(||)“从宽”、逻辑非(!) “反转”、异或(^)“找不同”。异或(两个输入不同则为真,相同则为假)
For循环终止语句:break;continue;
For{初始化变量;循环条件;迭带循环} 例如:
For{int i=0;i<5;i++}
// while 循环:条件不满足时,一次都不执行
int a = 5;
while (a > 10)
{
Console.WriteLine("while 循环执行了"); // 不会执行
}
// do-while 循环:先执行一次,再判断条件
int b = 5;
do
{
Console.WriteLine("do-while 循环执行了"); // 会执行一次
} while (b > 10);
//先判断在写条件
A:
Goto A;
Console.WriteLine("开始");
goto MyLabel; // 跳转到 MyLabel 标签处
// 以下代码会被跳过
Console.WriteLine("这里不会执行");
MyLabel: // 标签
Console.WriteLine("跳转到这里了");
使用switch的方法
switch (表达式) 是可以是任意类型变量
{
case 常量1: 常量 是与表达式中类型一致的常量
语句1;
case 常量2:
语句2;
break;
...
default:
语句n;
break;
}
每个 case 分支表示一种可能的情况,default 分支则表示当所有的 case 都不符合时需要执行的语句块
break 语句来终止整个 switch 语句的执行,否则会继续执行下一个 case 分支的语句块
public : 同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员。
internal : 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集不可以访问。
private : 同一结构的代码可以访问该类型和成员。
protected : 同一结构和派生(继承特性)类中的代码可以访问该类型和成员。
protected internal : 同一程序集中的任何代码或其他程序
3.C#的默认修饰符
类、结构体的默认修饰符是internal。
类中所有的成员默认修饰符是private。
接口默认修饰符是internal。
接口的成员默认修饰符是public。
枚举类型成员默认修饰符是public。
委托的默认修饰符是internal。
方法的分为 声明方法(定义方法) 和调用方法(使用方法):在静态方法调用实例方法Program aaa=new Program
aaa.PersonallncomeTax();
在静态方法调用静态方法Program.TestMethood();
4.声明方法基本结构:
访问权限
静态非静态 静态有:static 实例:无static
返回值类型 代表方法 是否具有 return 数据的类 void 和 其他明确的数据类型 (int float 。。 string。。。)
方法名称 大驼峰 见名之意
方法参数 实参(调用方法) 和形参(声明方法)
大括号
{
语句块
}
5.调用方法:
在哪调用(在方法内部调用 Main 入口方法 程序运行时 自动执行 Main方法是静态方法 自定义静态方法直接使用, 自定义非静态方法 需要对象打点调用)
只要被调用的是静态方法就是用类名
只要是其他类的方法被调用都不能省略类名
被调用的是非静态方法就是类的对象
本类的静态方法调用本类的非静态方法不能省略 类名
6.方法的分类:
从访问权限分类
从静态和非静态分类
从有无参数
从有无返回值分类
参数传递 形式:
值参数传递:
7. 特点:
1.值参数传递是参数传递的默认方式
2.当调用一个方法时,会为每个值参数创建一个新的存储位置。
3.当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全
总结:无论参数的类型是值类型还是引用类型 都遵循值传递的特性
特点
1.引用参数传递是一个对变量的内存位置的引用 不会创建一个新的存储位置
2. 参数关键字 ref
出参数传递
特点:
1. 是对于方法返回值类型的补充。return 语句可用于函数中返回一个值 输出参数可以返回多个值
2.关键字 out out输出参数在方法中 必须被使用
3. 其他方面与引用参数相似
1.params是ParamArrayAttribute(参数数组属性)的缩写
2.params解决了C#中不定长参数的传递的问题
3.params参数必须定义在参数列表最后面 且只能写一个
4.params必须是一维数组类型
5.一个方法中 params只能在定义一维数组
6. params 参数可以直接传入对应类型的数组 或者 直接传入数组中的数据
3.不可变数组
1.含义:
不可变数组是一个存储相同类型元素的固定大小的顺序集合
2.特点:
数组属于引用类型
数组只能包含类型相同的元素
数组通过下标(索引值)标记元素 下标从0开始 依次加1
3.格式:
1.声明数组:
datatype[] arrayName;
datatype 用于指定被存储在数组中的元素的类型。
指定数组的秩(维度)。秩指定数组的大小。
arrayName 指定数组的名称。
2.初始化数组中的元素的方式 (使用数组)
数据类型[] 数组名 = {值 1, 值 2, …}
数据类型[] 数组名 = new 数据类型[长度]{值 1,值 2,…}
数据类型[] 数组名 = new 数据类型[长度可忽略]{值 1,值 2,…}
数据类型[] 数组名 = new 数据类型[长度];
数组访问元素:
intArray[0];
修改数组元素:
intArray[0] = 1;
含义:数组嵌套数组形式 一般常用二维数组
String [, ] strArray= new string;
遍历foreach (var item in array)
{
Console.WriteLine($"遍历数组{item}");
}

81

被折叠的 条评论
为什么被折叠?



