c#的结构类型也可以有构造函数

来源:互联网 发布:matlab寻找矩阵有几行 编辑:程序博客网 时间:2024/05/01 20:37

 

  1.         protected struct FlareData
  2.         {
  3.             /// <summary>
  4.             /// Type of flare, see above.
  5.             /// </summary>
  6.             public int type;
  7.             /// <summary>
  8.             /// Position of flare (1=origin, 0=center of screen, -1=other side)
  9.             /// </summary>
  10.             public float position;
  11.             /// <summary>
  12.             /// Scale of flare in relation to MaxFlareSize.
  13.             /// </summary>
  14.             public float scale;
  15.             /// <summary>
  16.             /// Color of this flare.
  17.             /// </summary>
  18.             public Color color;
  19.             /// <summary>
  20.             /// Constructor to set all values.
  21.             /// </summary>
  22.             /// <param name="setType">Set type</param>
  23.             /// <param name="setPosition">Set position</param>
  24.             /// <param name="setScale">Set scale</param>
  25.             /// <param name="setColor">Set Color</param>
  26.             public FlareData(int setType, float setPosition,
  27.                 float setScale, Color setColor)
  28.             {
  29.                 type = setType;
  30.                 position = setPosition;
  31.                 scale = setScale;
  32.                 color = setColor;
  33.             }
  34.         }

这一段是Benjamin在XNA平台下做个一个游戏模板的其中一段,让我们来看看:

FlareData是一个结构类型,在结构中声明了若干的变量,然后在最后出现了有类似类的构造函数的一段代码,从来没有遇到过此类的用法。但仔细想想,结构在某个角度来看,也可以认为是一个类,类有构造函数,这个是毋庸置疑的,那既然如此,结构有构造函数也说的过去。

 

一般我们在代码中定义一个结构的值的时候,都需要“××.××=某个值”这样来定义,而使用了构造函数后,仅仅需要new一个结构,并把值传过去就行了,这样就使得在给结构的定义的时候能够简单明了。