C#中关于Struct(结构体)介绍以及附带案例解释,⼀看就会,⼀学就懂系列
前⾔:在我们⾯向对象的动态编程中,经常会遇到封装性问题,但是⽤⼀般的封装⽅法可能会造成代码数量过多,影响内存和程序运⾏速度,降低效率,所以我们会运⽤到结构体这个结构,⽤来对属性、⽅法进⾏封装;
⽬录:
⼀.Struct结构体的含义:
在 C# 中,结构体是值类型数据结构。它使得⼀个单⼀变量可以存储各种数据类型的相关数据。struct 关键字⽤于创建结构体。结构体是⽤来代表⼀个记录,⼀般的我们主要⽤结构体来封装⼀些⽅法或者属性,以便于调⽤,使⽤结构体⼀定程度上减少了代码运算量,也可以说⽐较⽅便;
⼆.结构体的声明:
为了定义⼀个结构,必须使⽤struct语句。struct语句为程序定义了⼀个带有多个成员的新的数据类型,声明的形式为:
struct struct_name
{
//⼀些⽅法或属性
}
举例:我们要统计某⼀个单位的⼈员信息,我们可以采⽤结构体,如下所⽰:
struct Person//struct声明结构体
{
//封装的⼀些属性
public string name;
public int age;
public string sex;
}
writeline方法的作用
但是我们应该怎样调⽤呢?,如下代码所⽰:我们⾸先得对其进⾏实例化,然后对其中的属性进⾏赋值,然后输出;
static void Main(string[] args)
{
//对结构体进⾏实例化
Person ss1 =new Person();
Person ss2 =new Person();
ss1.name ="张三";
ss1.sex ="男";
ss1.age =18;
Console.WriteLine("我的名字叫; {0}", ss1.name);
Console.WriteLine("性别; {0}", ss1.sex);
Console.WriteLine("我今年; {0}岁", ss1.age);
ss2.name ="李四";
ss2.sex ="⼥";
ss2.age =18;
Console.WriteLine("我的名字叫; {0}", ss2.name);
Console.WriteLine("性别; {0}", ss2.sex);
Console.WriteLine("我今年; {0}岁", ss2.age);
Console.ReadLine();
}
那么其输出结果为:
三.结构体的特点:
1. 结构可带有⽅法、字段、索引、属性、运算符⽅法和事件;
2. 结构可定义构造函数,但不能定义析构函数。但是,不能为结构定义⽆参构造函数。⽆参构造函数(默认)是⾃动定义的,且不能被改变;
3. 结构不能继承其他的结构或类;
4. 结构不能作为其他结构或类的基础结构;
5. 结构可实现⼀个或多个接⼝;
6. 结构成员不能指定为 abstract、virtual 或 protected;
7. 结构可以不使⽤ New 操作符即可被实例化;
8. 如果不使⽤ New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使⽤。
四.结构体的作⽤:
1. 结构体和其他类型基础数据类型⼀样,例如int类型、char类型,只不过结构体可以做成我们想要的数据类型;
2. 在实际项⽬中,结构体是⼤量存在的,使⽤结构体来封装⼀些属性来组成新的类型,其⽬的是简化运算;
3. 结构体在函数中的作⽤不是简便,其最主要的作⽤就是封装。封装的好处就是可以再次利⽤。让使⽤者不必关⼼这个是什么,只要根
据定义使⽤就可以了;
五.结构体的注意事项:
1. 结构体中声明的字段⽆法赋值:
例如:我们在对字段name进⾏赋值,显⽰错误内容如下:
struct Person
{
public string name="张三";
}
如下图:
2. 结构体的构造函数中,如果有字段没有被赋值,那么默认的值为0:
例如:
struct Person
{
public string name;
public int age;
public string sex;
}
static void Main(string[] args)
{
//对结构体进⾏实例化
Person ss1 =new Person();
Person ss2 =new Person();
ss1.name ="张三";
ss1.sex ="男";
// ss1.age = 18;
Console.WriteLine("我的名字叫; {0}", ss1.name);
Console.WriteLine("性别; {0}", ss1.sex);
/
/Console.WriteLine("我今年; {0}岁", ss1.age);
ss2.name ="李四";
ss2.sex ="⼥";
//ss2.age = 18;
Console.WriteLine("我的名字叫; {0}", ss2.name);
Console.WriteLine("性别; {0}", ss2.sex);
// Console.WriteLine("我今年; {0}岁", ss2.age);
Console.ReadLine();
}
在代码中会显⽰:
3. 结构体可以包含其他结构体,也可以包含指向⾃⼰的指针;
4. 结构体互相包含时,需要对其中⼀个进⾏不完整声明;
5. 结构是C#程序员⽤来定义⾃⼰的值类型的最普遍的机制。结构⽐枚举更强⼤,因为它提供函数、字段、构造函数、操作符和访问控
制。结构成员的缺省访问权限是private。当定义结构的成员名时,不要忘了对公有成员使⽤PascalCase(帕斯卡命名)规则,⽽对⾮公有成员使⽤camelCase(骆驼拼写法)规则。
补充:
PascalCase(帕斯卡命名):每⼀个单词的⾸字母都采⽤⼤写命名;
camelCase(骆驼拼写法):第⼀个单词的⾸字母⼩写,其余的单词⾸字母⼤写;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。