基本概念
结构体是一种自定义变量类型,类似于枚举需要自己定义。
它是数据和函数的集合。
在结构体中,可以声明各种变量和方法。
基本语法
1.结构体一般写在namespace语句块中。
2.结构体关键字struct
struct 自定义结构体名
{
//第一部分
//变量
//第二部分
//结构体(可选)
//第三部分
//函数
}
注意:结构体名字,我们的规范是帕斯卡命名法。
实例
//表现学生数据的结构体
struct Student
{
//变量
//结构体声明的变量,不能直接初始化
//变量类型可以写任意类型,包括结构体,但是不能是自己的结构体,可以是其他
//Student s;
//年龄
int age;
//性别
bool sex;
//学号
int number;
//姓名
string name;
//构造函数
//函数方法
//表现这个数据结构的行为
//注意在结构体中的方法,目前不需要加static关键字
void Speak()
{
//函数中可以直接使用结构体内部声明的变量。
Console.WriteLine($"我的名字是{name},我今年{age}岁");
}
//可以根据需求,写无数个函数。
}
访问修饰符
修饰结构体中变量和方法,是否能够被外部使用。
public公共的,可以被外部访问。
private私有的,只能在内容使用。
默认不写为private
//表现学生数据的结构体
struct Student
{
//变量
//结构体声明的变量,不能直接初始化
//变量类型可以写任意类型,包括结构体,但是不能是自己的结构体,可以是其他
//Student s;
//年龄
public int age;
//性别
public bool sex;
//学号
public int number;
//姓名
public string name;
//构造函数
//函数方法
//表现这个数据结构的行为
//注意在结构体中的方法,目前不需要加static关键字
public void Speak()
{
//函数中可以直接使用结构体内部声明的变量。
Console.WriteLine($"我的名字是{name},我今年{age}岁");
}
//可以根据需求,写无数个函数。
}
结构体的使用
//变量类型 变量名
Student s1;
s1.age = 18;
s1.sex=false;
s1.number = 1;
s1.name = "李华";
s1.Speak();
结构体的构造函数
1.没有返回值
2.函数名必须和结构体相同
3.必须有参数
4.如果声明了构造函数,那么必须在其中对所有变量数据初始化。
//表现学生数据的结构体
struct Student
{
//变量
//结构体声明的变量,不能直接初始化
//变量类型可以写任意类型,包括结构体,但是不能是自己的结构体,可以是其他
//Student s;
//年龄
public int age;
//性别
public bool sex;
//学号
public int number;
//姓名
public string name;
//构造函数,一般是用于在外面方便初始化的
public Student(int age, bool sex, int number, string name)
{
//新的关键字——this
//代表自己
this.age = age;
this.sex = sex;
this.number = number;
this.name = name;
}
//函数方法
//表现这个数据结构的行为
//注意在结构体中的方法,目前不需要加static关键字
public void Speak()
{
//函数中可以直接使用结构体内部声明的变量。
Console.WriteLine($"我的名字是{name},我今年{age}岁");
}
//可以根据需求,写无数个函数。
}
Student s2 = new Student(18, true, 2, "张三");
s2.Speak();
小结:
1.概念:结构体(struct)是变量和函数的集合,用来表示特定的数据集合。
2.访问修饰符:public和private用来修饰变量和方法的,public外部可以调用,private内部用,不写的话默认就是private。
3.构造函数:没有返回值,函数名和结构体相同,可以重载,主要是帮助我们快速初始化结构提对象的。
注意:
(1)在结构体中声明的变量,不能初始化,只能在外部或者在函数处赋值(初始化)(2)在结构体中声明的函数,不用加static的