結構就是幾個數據組成的數據結構,它與類共享幾乎所有相同的語法,但結構比類受到的限制更多。
結構是一種值的類型,通常用來封裝一組相關的變量,結構中可以包括構造函數、常量、字段、方法、屬性、運算符、事件和嵌套類型等。但如果要同時包括上述幾種成員,則應該考慮使用類。結構實際是將多個相關的變量包裝成為一個整體使用。在結構體中的變量,可以是相同、部分相同,或完全不同的數據類型。例如,把公司里的職員看作一個結構體,可以將個人信息放入結構體中,主要包含姓名、年齡、出生年月、性別、籍貫、婚否、職務。
在 C# 中的結構與傳統的 C 或 C++ 中的結構不同。結構具有以下特點:
- 結構是值的類型。
- 向方法傳遞結構時,結構是通過傳值方式傳遞的,而不是作為引用傳遞的。
- 結構的實例化可以不使用new運算符。結構可以聲明構造函數,但它們必須帶參數。當您使用 New 操作符創建一個結構對象時,會調用適當的構造函數來創建結構。
- 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被賦值,對象才被使用。
- 一個結構不能從另一個結構或類繼承。所有結構都直接繼承自
System.ValueType
,后者繼承自System.Object
。 - 結構可以實現接口。接口可實現一個或多個接口。
- 在結構中初始化實例字段是錯誤的。// 不能在結構中初始化字段。
- 結構成員不能指定為
abstract
、virtual
或protected
。
說明:
在結構聲明中,除非字段被聲明為const或static
,否則無法初始化。
實例:
class Program
{
public struct Rect//定義一個矩形結構
{
public double width;//矩形的寬
public double height;//矩形的高
public Rect(double x, double y)
{
width = x;
height = y;
}
public double Area()
{
return width * height;
}
}
static void Main(string[] args)
{
Rect rect1;//創建矩形結構
rect1.width = 5;//為矩形寬賦值
rect1.height = 3;//為矩形高賦值
Console.WriteLine("矩形面積為:" + rect1.Area());
Rect rect2 = new Rect(6, 4);//使用構造函數實例化矩形結構
Console.WriteLine("矩形面積為:" + rect2.Area());
}
}
輸出:
矩形面積為:15
矩形面積為:24
請按任意鍵繼續. . .
類和結構有以下幾個基本的不同點:
- 類是引用類型,結構是值類型。
- 結構不支持繼承。
- 結構不能聲明默認的構造函數。
參考:
- link-01 // 菜鳥教程
- 《C# 入門到精通》 -> P142