protected struct FlareData
{
/// <summary>
/// Type of flare, see above.
/// </summary>
public int type;
/// <summary>
/// Position of flare (1=origin, 0=center of screen, -1=other side)
/// </summary>
public float position;
/// <summary>
/// Scale of flare in relation to MaxFlareSize.
/// </summary>
public float scale;
/// <summary>
/// Color of this flare.
/// </summary>
public Color color;
/// <summary>
/// Constructor to set all values.
/// </summary>
/// <param name="setType">Set type</param>
/// <param name="setPosition">Set position</param>
/// <param name="setScale">Set scale</param>
/// <param name="setColor">Set Color</param>
public FlareData(int setType, float setPosition,
float setScale, Color setColor)
{
type = setType;
position = setPosition;
scale = setScale;
color = setColor;
}
}
這一段是Benjamin在XNA平臺下做個一個遊戲模板的其中一段,讓我們來看看:
FlareData是一個結構類型,在結構中聲明瞭若干的變量,然後在最後出現了有類似類的構造函數的一段代碼,從來沒有遇到過此類的用法。但仔細想想,結構在某個角度來看,也可以認爲是一個類,類有構造函數,這個是毋庸置疑的,那既然如此,結構有構造函數也說的過去。
一般我們在代碼中定義一個結構的值的時候,都需要“××.××=某個值”這樣來定義,而使用了構造函數後,僅僅需要new一個結構,並把值傳過去就行了,這樣就使得在給結構的定義的時候能夠簡單明瞭。