C#語法學習結構(Struct)

/*結構體(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());
    }
}
posted @ 2008-09-05 14:30  Athrun  阅读(1741)  评论(0编辑  收藏  举报