在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
/*結構體(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()); } } |
请发表评论