2.C# —— 结构体、类型转换与运算符

目录

一、结构体(struct)与常量(const)

[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。


六、总结

  1. 结构体打包变量,属于值类型。
  2. const 常量定义后不可修改。
  3. 值类型拷贝数据,引用类型拷贝地址
  4. 转换优先用 TryParse,安全不报错。
  5. ++/-- 区分先后顺序;&& || 具有短路特性
  6. 三目运算符可以简化简单判断。
相关推荐
njsgcs3 小时前
c# solidworks GetPartBox无法获得正确实体边界框原因
开发语言·c#·solidworks
rockey6273 小时前
AScript之匿名类型与动态类型
c#·.net·script·eval·expression·动态脚本
99乘法口诀万物皆可变3 小时前
BMS HIL 自动化测试框架方案(基于 CANoe + C# + Excel)
开发语言·c#·excel
祀爱4 小时前
定时任务之BackgroundService的详细教程
后端·c#·asp.net
weixin_428005305 小时前
C#调用 AI学习从0开始-第1阶段(基础与工具)-第3天FewShot少样本测试
人工智能·c#
思麟呀5 小时前
在C++基础上理解CSharp-1
开发语言·c++·c#
雪豹阿伟6 小时前
3.C# —— 变量运算、位运算、条件判断
c#·上位机
未来超低端科技研究所6 小时前
大恒工业相机c#开发,NET8跨平台使用(armlinux和x86linux)
linux·c#·工业相机·net8·大恒图像·跨平台开发
海盗12346 小时前
C#中使用MiniExcel 快速入门:读写 .xlsx 文件
开发语言·windows·c#