龙空技术网

结构体(Struct) 与 类(Class)

媒体专属号 110

前言:

现时同学们对“结构体中结构体”大体比较关心,大家都需要分析一些“结构体中结构体”的相关知识。那么小编同时在网摘上汇集了一些关于“结构体中结构体””的相关内容,希望我们能喜欢,你们一起来了解一下吧!

需求一

例如,下面的程序创建并初始化一个含有 100 个点的数组。对于作为类实现的 Point,出现了 101 个实例对象,其中,数组需要一个,它的 100 个元素每个都需要一个。

//结构体定义形式

struct Point

{

public int x, y;

public Point(int x, int y)

{

this.x = x;

this.y = y;

}

}

//类定义形式

class Point

{

public int x, y;

public Point(int x, int y)

{

this.x = x;

this.y = y;

}

}

class Test

{

static void Main() {

Point[] points = new Point[100];

for (int i = 0; i < 100; i++)

{

points[i] = new Point(i, i);

}

}

小结

现在,只有一个对象被实例化(即用于数组的那个对象),而 Point 实例以值的形式直接内联存储在数组中。

需求二 结构体(Struct)完全拷贝,类(Class)地址赋值

Point a = new Point(10, 10);

Point b = a;

a.x = 20;

Console.WriteLine(b.x);

如果 Point 是类,输出将是 20,因为 a 和 b 引用同一对象。如果 Point 是结构,输出将是 10,因为 a 对 b 的赋值创建了该值的一个副本,因此接下来对 a.x 的赋值不会影响 b 这一副本。

总结

适用场景:

结构体对于具有值语义的小型的数据结构特别有用。复数、坐标系中的点或字典中的“键-值”对都是结构的典型示例。对小型数据结构而言,使用结构而不使用类会大大节省应用程序分配的内存量。

1、结构体(Struct)是值类型,类(Class)是引用类型.

2、结构体(Struct)不能被继承,类(Class)可以被继承.

4、结构体(Struct)偏向于"简单值",比如小于16字节,结构简单,类(Class)偏向于"面向对象",用于复杂、大型数据.

5、结构体(Struct)的new和类(Class)的new是不同的。结构体(Struct)的new就是执行一下构造函数创建一个新实例再对所有的字段进行Copy。而类(Class)则是在堆上分配一块内存然后再执行构造函数,结构体(Struct)的内存并不是在new的时候分配的,而是在定义的时候分配

标签: #结构体中结构体 #结构体构造函数怎么写 #结构体名函数名 #结构体中的函数有哪些 #简述结构体适用于哪些情况