C#每日一課(十五)
阿新 • • 發佈:2018-11-04
C# 結構體(Struct)
結構是值型別資料結構。它使得一個單一變數可以儲存各種資料型別的相關資料。struct關鍵字用於建立結構。
為了定義一個結構,必須使用struct語句。struct語句為程式定義了一個帶多個成員的新資料型別。
比如,定義一個圖書Books的結構體可以如下進行:
struct Books
{
public string title;
public string author;
public string subject;
public long book_id;
};
使用Visual Studio新建C#控制檯應用程式Chapter10_001
在專案中新增如下程式碼:
//定義一個Books結構 struct Books { public string title; public string author; public string subject; public long book_id; }; class Program { static void Main(string[] args) { //宣告Book型別陣列 Books[] books = new Books[2]; //初始化books陣列中的值 books[0].title = "ESSENTIAL C#6.0"; books[0].author = "Mark Michaelis Eric Lippert"; books[0].subject = "C#"; books[0].book_id = 100001; books[1].title = "C++ Primer Plus Sixth Edition"; books[1].author = "Stephen Prata"; books[1].subject = "C++"; books[1].book_id = 100002; //在控制檯輸出資訊 foreach (Books b in books) { Console.WriteLine("Book Title:{0}",b.title); Console.WriteLine("Book Author:{0}", b.author); Console.WriteLine("Book Subject:{0}",b.subject); Console.WriteLine("Book Id:{0}",b.book_id); Console.WriteLine("------------------------------"); } Console.ReadKey(); } }
編譯執行後結果如下:
C#結構的特點:
- 結構可以帶有方法、欄位、索引、屬性、運算子方法和事件
- 結構可以定義建構函式,但是不可以定義解構函式。注意是不可以定義預設建構函式的,預設的建構函式是自動定義且不可以修改的
- 與類不同,結構不能繼承其它結構或類
- 結構不可以作為其它結構或類的基礎結構
- 結構可以實現一個或多個介面
- 結構成員不可以指定為abstract、virtual、protected
- 當使用new操作符建立一個結構物件時,會呼叫適當的建構函式來建立結構,與類不同,結構可以不用new操作符即可被例項化
- 如果不使用new操作符,只有在所有欄位都被初始化後,欄位才被賦值,物件才被使用
從上面可以看出類與結構主要的不同點如下:
類是引用型別,結構是值型別
結構不支援繼承
結構不能宣告預設的建構函式
在結構體中新增方法如下:
public void Display()
{
Console.WriteLine("Book Title:{0}", title);
Console.WriteLine("Book Author:{0}", author);
Console.WriteLine("Book Subject:{0}", subject);
Console.WriteLine("Book Id:{0}", book_id);
}
在Main方法中新增如下程式碼:
//呼叫結構中方法顯示相關資訊
Console.WriteLine("呼叫結構中方法顯示相關資訊:");
foreach (Books b in books)
{
b.Display();
Console.WriteLine("------------------------------");
}
編譯執行後的結果如下:
C#列舉(Enum)
列舉是一組命名整型常量。它是使用enum關鍵字宣告的。
C#列舉是值資料型別。也就是說列舉包含自己的值,並且是不可以繼承的。
宣告emum變數語法:
enum <enum_name>
{
enumeration list
};
enum_name指定列舉的名稱
enumeration list是一個用逗號分隔的識別符號列表
如:
enum Days {Sun,Mon,Tue,Wed,Thu,Fri,Sat};
在程式中新增一個列舉變數
//宣告一個列舉變數
enum Days { Sun,Mon,Tue,Wed,Thu,Fri,Sat};
在Main方法中新增如下程式碼:
//列舉的使用
int WeekdayStart = (int)Days.Mon;
int WeekdayEnd = (int)Days.Fri;
Console.WriteLine("WeekdayStart-Monday:{0}", WeekdayStart);
Console.WriteLine("WeekdayEnd-Friday:{0}", WeekdayEnd);
編譯執行後的結果如下: