前言:
现时同学们对“结构体中结构体”大体比较关心,大家都需要分析一些“结构体中结构体”的相关知识。那么小编同时在网摘上汇集了一些关于“结构体中结构体””的相关内容,希望我们能喜欢,你们一起来了解一下吧!需求一
例如,下面的程序创建并初始化一个含有 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的时候分配的,而是在定义的时候分配
标签: #结构体中结构体 #结构体构造函数怎么写 #结构体名函数名 #结构体中的函数有哪些 #简述结构体适用于哪些情况