/*結構體(struct)
*通常我們會用來封裝小型相關變量
*例如,點的x,y的坐標.
* public struct Point
* {
* public int X;
* public int Y;
* }
* 結構體是一個值類型
* 結構也可以包含建構函式、常數、欄位、方法、屬性、索引子、運算子、事件和巢狀型別,
* 雖然如果需要上述數種成員時,您應該考慮讓型別變成類別。
* 結構可以實作介面,但不能繼承自另一個結構。
* 因為如此,結構成員無法宣告為 protected。
*
* 結構有下列屬性:
* 結構為實值型別,而類別則是參考型別。
* 與類別不同的是,結構不需使用 new 運算子就能執行個體化
* 結構可以宣告建構函式,但是必須採用參數
* 結構無法從另一個結構或類別繼承而來,且它不能成為類別的基底。所有結構都是從繼承自 System.Object 的 System.ValueType 直接繼承而來
* 結構可實作介面
* 結構可以用來當做可為 Null 的型別,而且可以對其指派 null 值。
*
*
* 結構與類別所使用的語法幾乎相同,不過結構的限制比類別多:
* 結構宣告內不能初始化欄位,除非將其宣告為 const 或 static。
* 結構不可宣告預設建構函式 (沒有參數的建構函式) 或解構函式。
* 由於編譯器會自動建立和終結結構的複本,因此不需要預設建構函式和解構函式。
* 實際上,編譯器會指派其預設值的所有欄位來實作預設建構函式 (請參閱預設值表 (C# 參考))。結構無法繼承自類別或其他結構。
* 結構為實值型別。當您從結構建立物件並指派給變數時,變數就會包含完整的結構值。當複製包含結構的變數時,就會複製所有資料,而新變數所做的任何修改並不會變更舊變數的資料
* 。由於結構不會使用參考,因此沒有識別。您無法區別兩個具有相同資料的實值型別執行個體。C# 中的所有實值型別都衍生自 ValueType,該型別則繼承自 Object。
* 實值型別可由編譯器在稱為 boxing 的處理序中轉換成參考型別。如需詳細資訊,請參閱 Boxing 和 Unboxing (C# 程式設計手冊)。
*
*
*/
using System;
public struct Book
{
public int price;
public string title;
public string author;
}
class Test
{
static void Main()
{
Book bk=new Book();
bk.price=23;
bk.title="書名";
bk.author="作者";
Console.WriteLine(bk.title.ToString() + bk.author.ToString() + bk.price.ToString());
}
}