你的位置:首页 > 软件开发 > ASP.net > C#学习笔记之结构体

C#学习笔记之结构体

发布时间:2015-07-30 22:00:13
1.概述结构是一种与类相似的数据类型,不过它较类更为轻量,一般适用于表示类似Point、Rectangle、Color的对象。基本上结构能办到的类全都能办到,但在某些情况下使用结构更为合适,后面会有提到。结构具有以下特点:结构可以实现接口。结构可以声明带参数的构造函数。结构不能声 ...

1.概述

结构是一种与类相似的数据类型,不过它较类更为轻量,一般适用于表示类似Point、Rectangle、Color的对象。基本上结构能办到的类全都能办到,但在某些情况下使用结构更为合适,后面会有提到。

结构具有以下特点:

  • 结构可以实现接口。
  • 结构可以声明带参数的构造函数。

  • 结构不能声明默认构造函数(没有参数的构造函数)或析构函数。                                 

  • 结构是值类型,而类是引用类型。

  • 实例化结构体时可以不使用new运算符。                           

  • 结构类型是不可抽象、隐式密封的,故不能使用abstract和sealed修饰符。                                                

  • 在结构中声明字段时,字段无法被初始化,除非字段加上关键字const或static。

  • 一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。                          

  • 结构在赋值时进行复制。将结构赋值给新变量时,将复制所有数据,并且对新副本所做的任何修改不会更改原始副本的数据。 不过结构仍然可以使用ref和out参数引用的方式传值给函数成员。另,在使用值类型的集合(如 Dictionary<get='_blank'>string, myStruct>)时,请务必记住这一点。

2.结构体声明

C#学习笔记之结构体C#学习笔记之结构体
  //结构体的声明  public struct Rectangle  {    public double x,y;    public static double z = 5;//结构体里的字段只有加上static或者const关键字才能被初始化    //结构体里的构造函数必须是带参数的    public Rectangle(double x1, double y1)    {      x= x1;      y= y1;      Console.WriteLine(x.ToString()+" "+y.ToString());    }  }  class Prgram1  {    static void Main(string[] args)    {      //结构体的初始化      Rectangle rect1;      Rectangle rect2 = new Rectangle();      Rectangle rect3 = new Rectangle(5, 5);      //输出各个的值      Console.Write("rect1:");      Console.WriteLine("x = {0}, y = {1}", rect1.x, rect1.y);      Console.Write("rect2:");      Console.WriteLine("x = {0}, y = {1}", rect2.x, rect2.y);      Console.Write("rect3:");      Console.WriteLine("x = {0}, y = {1}", rect3.x, rect3.y);    }  }  /* 输出:  rect1: x = 0, y = 0  rect2: x = 0, y = 0  rect3: x = 5, y = 5  */

原标题:C#学习笔记之结构体

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录