2023-07-11
自我提升
0

结构体

我们⽬前学习的变量,都是某⼀个单⼀的信息,⽐如

  • age
  • name
  • grade
  • studyID

对于⼀个学⽣信息的话,是包含了这些的,我们怎么对这些信息进⾏⼀个整合呢?

答案:结构体

结构体的作⽤就是把某⼀类的变量进⾏整合,组成⼀个新的数据类型,相当于⼀个新的信息。
⽐如学⽣信息(包含了 年龄,姓名、年级、学号)

创建10个学生的数组

c#
StudentInfo[] students = new StudentInfo[10]; students[0].age = 30; Console.WriteLine(students[0].age); //给1号学生年龄赋值 int[] stuAge = new int[10]; //创建10个学生年龄的数组 string[] stuName = new string[10]; //创建10个学生名字的数组

怎么定义和使⽤结构体?

c#
struct <name>{ 访问权限 type typename; 访问权限 type typename; }

❓学⽣信息的结构体

c#
struct StudentInfo{ public int age; // public 权限 公开的 public String name; public int grade; public String studyID; } StudentInfo xiaoming; xiaoming.age = 12; xiaoming.name = "⼩明"; xiaoming.grade = 2; xiaoming.studyID = "101214";

❓定义⼀个表⽰三维坐标的结构体

c#
struct Position{ public double x; public double y; public double z; } Position point1; point1.x = point.y = 23.5; point1.z = 1.5

结构体中的函数

c#
struct Position { public double x; public double y; public double z; public void PrintPosition() { Console.WriteLine(x + "," + y + "," + z); } } static void PrintPosition(Position p) { Console.WriteLine(p.x + "," + p.y + "," + p.z); } Position p1; //调用 p1.x = 23.3; p1.y = 3.4; p1.z = 1; p1.PrintPosition(); Position p2; //调用 p2.x = 1; p2.y = 2; p2.z = 3; p2.PrintPosition();

结构体中不但可以定义属性,也可以定义函数。

c#
struct CustomerName{ public string firstName; public string lastName; } CustomerName myName; myName.firstName = "siki"; myName.lastName = "Liang"; Console.WriteLine("My name is "+myName.firstName+" "+myName.lastName); // 在结构体中定义函数,实现得到名字 struct CustomerName{ public string firstName; public string lastName; public string GetName(){ return firstName+" "+lastName; } Console.WriteLine("My name is "+ GetName); }

提示

当我们在结构体中定义⼀个函数的时候,这个函数就可以通过结构体声明的变量来调⽤, 这个函数可以带有参数,那么调⽤的时候必须传递参数, 这个函数,可以使⽤结构体中的属性。

❓结构函数训练:
定义⼀个Vector3的类(这个类可以⽤来表⽰坐标,可以表⽰向量),在⾥⾯定义⼀个Distance⽅法,⽤来取得⼀个向量的⻓度的

c#
struct Vector3 { public double x; public double y; public double z; public double Distance() { double temp = x * x + y * y + z * z; return Math.Sqrt(temp); } } // 主函数入口 static void Main(string[] args) { Vector3 v1; v1.x = 4; v1.y = 5; v1.z = 7; Console.WriteLine(v1.Distance()); }