C#笔记08 结构体

本文是C#自学笔记,详细介绍了结构体的定义、声明、使用以及与类的区别。结构体作为值类型,不允许字段初始化,且不能为null。结构体对象在使用时需要实例化,并通过对象调用其成员。与类的主要区别在于结构体是值类型,不支持继承,且字段必须完全赋值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#笔记08 结构体

——本系列是基于人民邮电出版社《C#2008 C#图解教程》、清华大学出版社《C#入门经典(第五版)》两本书的自学C#笔记,如果您发现了本文的纰漏,还望不吝指正。

写在前边

*复习:类型是一种模版,C#提供了15种预定义类型,还可以创建自己的用户定义类型,有6种类型:

  • 类类型(class)
  • 结构类型(struct)
  • 数组类型(array)
  • 枚举类型(enum)
  • 委托类型(delegate)
  • 接口类型(interface)

1. 什么是结构体

结构体就是由几个数据组成的数据结构,这些数据可能具有不同的类型。根据这个结构,可以定义自己的变量类型。

2. 结构体的声明

由于结构体是值类型,所以和所有值类型一样,结构体变量含有它自己的数据,所以:

  • 结构体的变量不能为null
  • 两个结构体不能引用同一对象

struct 结构名
{ 成员,成员,成员 }

struct route
{
	public orientation direction;
	public double distance;
	public static int age;
}

另外需要注意:

  • 结构体中字段初始化是不允许的

如下代码,在编译时会产生编译错误

//错误示范
struct Simple
{
	public int x = 0;	//结构体中字段初始化是不允许的
	public int y = 0;
}

3.结构体的使用

1).结构体在使用时,需要实例化一个对象

结构体名 变量名(对象名)=new 结构体名();

route myRoute = new route(); //或者route myRoute,不使用new

2).结构体对象成员的调用

对象名.成员

myRoute.direction = orientation.north;
myRoute.distance = 2.5;

3).结构体静态成员的调用

结构体名.成员名

route.age = 18;

4.结构体和类的区别

(对比之后关于C#类的笔记进行学习)

1).类对象是引用数据类型(复杂结构),结构体对象是值类型(对运算速度要求更高、数据结构简单)
结构体和类的区别
上图出自 人民邮电出版社《C#2008 C#图解教程》第12章

2).类中的字段可以赋初始值,结构体不能

3).类中的有参构造函数可以不对字段进行赋值,但是结构体必须对所有字段完全赋值

4).类中有了有参构造,系统不会默认添加构造函数,结构体中即使有了有参构造,系统还会默认添加无参构造,不能自己显式添加(下图)

8-2

写在最后

(扩展学习)

  • 15种预定义类型中的简单类型(int、short、long等),实际上都是在.NET内部通过结构体实现的
  • 默认的无参构造函数,为所有的字段赋值,值类型的字段赋值0,引用类型的字段赋值null
  • 虽然结构体不能从另外一个结构或者类继承,但是可以实现接口
  • 结构体本身派生自System.ValueType,而System.ValueType派生自System.Obect,所以结构体对象仍然拥有超类Object的成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值