大家好,欢迎来到IT知识分享网。
前言:在我们面向对象的动态编程中,经常会遇到封装性问题,但是用一般的封装方法可能会造成代码数量过多,影响内存和程序运行速度,降低效率,所以我们会运用到结构体这个结构,用来对属性、方法进行封装;
一.Struct结构体的含义:
在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct
关键字用于创建结构体。结构体是用来代表一个记录,一般的我们主要用结构体来封装一些方法或者属性,以便于调用,使用结构体一定程度上减少了代码运算量,也可以说比较方便;
二.结构体的声明:
为了定义一个结构,必须使用struct语句。struct语句为程序定义了一个带有多个成员的新的数据类型,声明的形式为:
struct struct_name
{
//一些方法或属性
}
举例:我们要统计某一个单位的人员信息,我们可以采用结构体,如下所示:
struct Person//struct声明结构体
{
//封装的一些属性
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();
}
那么其输出结果为:
三.结构体的特点:
- 结构可带有方法、字段、索引、属性、运算符方法和事件;
- 结构可定义构造函数,但不能定义析构函数。但是,不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变;
- 结构不能继承其他的结构或类;
- 结构不能作为其他结构或类的基础结构;
- 结构可实现一个或多个接口;
- 结构成员不能指定为
abstract
、virtual
或protected
; - 结构可以不使用
New
操作符即可被实例化; - 如果不使用
New
操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
四.结构体的作用:
- 结构体和其他类型基础数据类型一样,例如int类型、char类型,只不过结构体可以做成我们想要的数据类型;
- 在实际项目中,结构体是大量存在的,使用结构体来封装一些属性来组成新的类型,其目的是简化运算;
- 结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了;
五.结构体的注意事项:
- 结构体中声明的字段无法赋值:
例如:我们在对字段name进行赋值,显示错误内容如下:
struct Person
{
public string name="张三";
}
如下图:
- 结构体的构造函数中,如果有字段没有被赋值,那么默认的值为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();
}
在代码中会显示:
- 结构体可以包含其他结构体,也可以包含指向自己的指针;
- 结构体互相包含时,需要对其中一个进行不完整声明;
- 结构是C#程序员用来定义自己的值类型的最普遍的机制。结构比枚举更强大,因为它提供函数、字段、构造函数、操作符和访问控制。结构成员的缺省访问权限是
private
。当定义结构的成员名时,不要忘了对公有成员使用PascalCase(帕斯卡命名)
规则,而对非公有成员使用camelCase(骆驼拼写法)
规则。
补充:
PascalCase(帕斯卡命名)
:每一个单词的首字母都采用大写命名;
camelCase(骆驼拼写法)
:第一个单词的首字母小写,其余的单词首字母大写;
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15339.html