目录
[1. 结构体(struct)](#1. 结构体(struct))
[2. 常量(const)](#2. 常量(const))
[二、值类型 vs 引用类型(核心重点)](#二、值类型 vs 引用类型(核心重点))
[1. 值类型](#1. 值类型)
[2. 引用类型](#2. 引用类型)
[三、4 种类型转换方法(新手必会)](#三、4 种类型转换方法(新手必会))
[1. 强制转换(数字 → 数字)](#1. 强制转换(数字 → 数字))
[2. Parse 转换(字符串 → 对应类型)](#2. Parse 转换(字符串 → 对应类型))
[3. Convert 万能转换](#3. Convert 万能转换)
[4. TryParse 安全转换(最推荐)](#4. TryParse 安全转换(最推荐))
[四、常用运算符(5 大类)](#四、常用运算符(5 大类))
[1. 算术运算符](#1. 算术运算符)
[2. 赋值运算符](#2. 赋值运算符)
[3. 自增 / 自减运算符](#3. 自增 / 自减运算符)
[4. 比较运算符](#4. 比较运算符)
[5. 三目运算符](#5. 三目运算符)
[1. && 短路与](#1. && 短路与)
[2. || 短路或](#2. || 短路或)
[3. ! 取反](#3. ! 取反)
[4. ^ 异或](#4. ^ 异或)
一、结构体(struct)与常量(const)
结构体用于打包多个相关变量,常量用于定义不可修改的值,是规范数据的常用方式。
1. 结构体(struct)
作用:把多个变量打包成一个整体,统一管理(如长方形、坐标、学生信息)。特点:属于值类型,存储数据本身。
cs
using System;
namespace 结构体和常量
{
internal class Program
{
static void Main(string[] args)
{
// 声明结构体变量
Rect rect;
// 赋值
rect.length = 100;
rect.width = 10;
// 使用
Console.WriteLine("矩形面积:" + rect.length * rect.width);
}
// 定义结构体
struct Rect
{
public float length;
public float width;
}
}
}
2. 常量(const)
作用:定义一旦赋值就不能修改的值。注意:必须在定义时赋值,后续不能修改。
cs
// 定义常量
const float PI = 3.14159f;
// PI = 3.14; 报错,常量不可修改
二、值类型 vs 引用类型(核心重点)
一句话记忆:值类型存数据本身,引用类型存地址。
1. 值类型
- 存储数据本身
- 赋值时拷贝一份新数据
- 修改一个,另一个不受影响
- 包含:int、float、double、bool、char、byte、struct、enum
cs
int a = 10;
int b = a;
a = 20;
Console.WriteLine(b); // 输出 10
2. 引用类型
- 存储数据地址
- 赋值时拷贝地址,共用一份数据
- 修改一个,另一个跟着变
- 包含:string、class、数组
提示:string 是特殊引用类型,具有不可变性。
三、4 种类型转换方法(新手必会)
处理字符串转数字、数字类型互转必备,覆盖所有场景。
1. 强制转换(数字 → 数字)
语法:(目标类型)变量会直接忽略小数,不四舍五入。
cs
float a = 10.9f;
int b = (int)a; // 结果 10
2. Parse 转换(字符串 → 对应类型)
语法:类型.Parse(字符串)转换失败会报错。
cs
string str = "10";
int num = int.Parse(str); // 10
bool b = bool.Parse("True"); // True
3. Convert 万能转换
适用范围最广,支持各种类型互转。
cs
int num = Convert.ToInt32("10");
string str = Convert.ToString(100);
bool b = Convert.ToBoolean("true");
4. TryParse 安全转换(最推荐)
不会报错,失败返回 false,结果为默认值。
cs
string str = "10";
bool success = int.TryParse(str, out int result);
Console.WriteLine(success + ":" + result);
补充:隐式转换(自动转换)
小范围 → 大范围,自动转换,不丢失数据。
cs
int a = 10;
long b = a; // 自动转换
四、常用运算符(5 大类)
1. 算术运算符
+ - * / %
/:整数相除只保留整数%:取余,常用于取个位、十位、百位
cs
Console.WriteLine(10 / 20); // 0
Console.WriteLine(10 % 20); // 10
// 取 321 的百位、十位、个位
int num = 321;
int ge = num % 10;
int shi = (num % 100) / 10;
int bai = num / 100;
2. 赋值运算符
= += -= *= /= %=
cs
int a = 100;
a += 10; // a = a + 10
3. 自增 / 自减运算符
++ 每次 +1,-- 每次 -1
a++:先用后加++a:先加后用
cs
int a = 10;
Console.WriteLine(a++); // 10
Console.WriteLine(++a); // 12
4. 比较运算符
< > <= >= == !=结果一定是 bool(true /false)
5. 三目运算符
条件 ? 成立值 : 不成立值
cs
string res = 10 > 20 ? "真" : "假";
五、逻辑运算符(重点)
&& || ! ^
1. && 短路与
一假则假,前面为假,后面不执行。
2. || 短路或
一真则真,前面为真,后面不执行。
3. ! 取反
!true = false
4. ^ 异或
两个条件不一样为 true。
六、总结
- 结构体打包变量,属于值类型。
- const 常量定义后不可修改。
- 值类型拷贝数据,引用类型拷贝地址。
- 转换优先用 TryParse,安全不报错。
- ++/-- 区分先后顺序;&& || 具有短路特性。
- 三目运算符可以简化简单判断。