C# —— 结构体

结构体: 是属于值类型,使得一个单一变量可以存储各种数据类型的相关数据,

结构体和类:

 1 结构体是值类型,类是引用类型
 2 结构体不能声明无参数的构造函数,类可以声明无参数的构造函数
 3 结构体不能被继承,类可以被继承
 4 结构体在声明字段初始化不能赋值,可以再构造器进行赋值,类可以在初始化和构造函数都可以赋值
 5 结构体和类都可以实现一个或者多个接口
 6 结构体里面不能声明protected成员变量、类中可以声明受保护的成员变量

列:

1 创建一个结构体方法

 public struct Student

2 定义他的名字 年龄 工资

// public string Name = "zs"; // 初始化不能赋值

3 可以定义构造器 必须要赋值

4 定义一个GetInfo方法 打印学生基本信息

5 在Main里面进行调用 首先创建结构体

### C#结构体的定义和用法 #### 1. 结构体的基本概念 结构体(`struct`)在C#中属于值类型,用于封装一组相关的变量。它适合于表示轻量级的数据结构,例如坐标、日期、时间等[^2]。相比于类,结构体具有更好的性能特性以及值语义,尤其适用于需要频繁复制的小型数据集合。 #### 2. 结构体的定义方式 结构体通过关键字 `struct` 来定义,并可以在其中声明字段、属性、方法、索引器、运算符重载等内容。下面是一个典型的结构体定义示例: ```csharp public struct GameObjectPosition { public float x; public float y; public float z; // 构造函数 public GameObjectPosition(float xValue, float yValue, float zValue) { this.x = xValue; this.y = yValue; this.z = zValue; } // 方法 public void PrintCoordinates() { Console.WriteLine($"X: {this.x}, Y: {this.y}, Z: {this.z}"); } } ``` 此代码片段展示了如何定义一个名为 `GameObjectPosition` 的结构体,该结构体包含三个浮点数字段 (`x`, `y`, 和 `z`) 表示三维空间中的位置[^2]。还提供了一个带参数的构造函数以便初始化这些字段,并定义了一个打印坐标的简单方法。 #### 3. 结构体的使用场景 由于结构体是值类型,默认情况下会在栈上分配内存,因此它们非常适合处理小型且经常被拷贝的对象。以下是几种常见用途: - **几何计算**:如二维或三维向量、矩阵等。 - **物理模拟**:描述物体的位置、速度、加速度等基本信息。 - **嵌套结构**:当某个复杂对象由若干较小部分组成时,可以用结构体分别建模各组成部分后再组装到一起。 #### 4. 特殊情况下的数组处理 有时候我们需要将C++或其他语言中的结构体映射到C#里,尤其是那些包含固定大小数组的情况。此时可以通过逐一拆分的方式解决兼容性问题[^3]。例如给定如下C++结构体: ```cpp typedef struct CrdPrm { short dimension; short profile[8]; } TCrdPrm; ``` 对应的C#版本可以这样编写: ```csharp public struct TCrdPrm { public short dimension; // 手动展开profile数组为单独字段 public short profile1; public short profile2; public short profile3; public short profile4; public short profile5; public short profile6; public short profile7; public short profile8; } ``` 这种方法虽然繁琐一些,但在跨平台交互过程中非常实用。 #### 5. 实际应用案例 为了进一步说明结构体的实际运用效果,考虑这样一个例子——记录个人信息并显示出来[^4]: ```csharp // 定义结构体 struct PersonInfo { public string Name; public int Age; public string Sex; } class Program { static void Main(string[] args) { // 创建两个PersonInfo实例 PersonInfo person1 = new PersonInfo(); person1.Name = "张三"; person1.Age = 20; person1.Sex = "男"; PersonInfo person2 = new PersonInfo(); person2.Name = "李四"; person2.Age = 18; person2.Sex = "女"; // 显示信息 Console.WriteLine("姓名:" + person1.Name); Console.WriteLine("年龄:" + person1.Age.ToString()); Console.WriteLine("性别:" + person1.Sex); Console.WriteLine("\n姓名:" + person2.Name); Console.WriteLine("年龄:" + person2.Age.ToString()); Console.WriteLine("性别:" + person2.Sex); } } ``` 这里演示了怎样利用结构体保存个人资料并通过控制台输出相关内容。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值