c# 结构的使用

时间:2021-05-14 04:33:36

   类的定义的是引用类型,重点在堆上创建,有的时候类只包含极少的数据,因为管理堆而造成的开销是很大的。这时候更好的做法就是将类型定义成结构。结构是值类型,在栈上存储,能有效的减小内存管理的开销。c#基元类型在Microsoft.NET Framework中对应的类型,string和object类型是类而不是结构。

c# 结构的使用

一、声明结构

  声明结构要以struct关键字开头,后面跟上类型名称,最后是大括号中的结构主体。

  例如下面代码,首先申请一个私有的abc三个变量,使用Variable方法设置变量值,分别使用三个Out方法返回值。

struct Variable
{
private int a, b, c;//设置为私有的变量
public Variable(int aa,int bb,int cc)
{
a = aa;
b = bb;
c = cc;
}
public int aOut()
{
return this.a;
}
public int bOut()
{
return this.b;
}
public int cOut()
{
return this.c;
}
}
namespace t

  注意:许多常用的操作符不能自动应用于自定义结构类型,例如:==和!=操作符就不能在自定义的结构体变量。但可以使用所有结构都公开的Equals()方法来比较,还可以作为自己的结构类型显示声明并实践操作符。如果一个概念的中点在于值而并不是功能,就可以使用结构来实现。

二、结构和类的区别

  1、不能为结构声明一个默认构造器,就是指的是无参数的构造器。应为编译器始终会自动生成一个,但是在类中,只有在没有自己写构造器的时候,编译器才会自动生成默认构造器,另外编译器为结构生成的默认构造的总是将字段设置为0、false或者null,这个和类是一样的。

  如果不想使用这些默认值,可以像上面的代码一样构建一个自己构造的有参数的构造器。但是需要做到的是吧所有的变量都要初始化,因为编译器通过自己创建的构造器来初始化变量。

  2、类的实例可以在声明时初始化,但是结构是不允许的。如果初始化会在编译时提示,结构中不能有实例字段初始值设定项。

三、结构的使用

c# 结构的使用

  这个位置,假如使用默认的构造器的话是不用使用,new 后面的来初始化值的。也可以在方法中直接写。