C#之結構和列舉
結構
結構是值型別資料結構,它使變數可以儲存各種資料型別的相關資料,用struct關鍵字來建立結構。結構代表一個記錄,比如你想記錄一個人的各種屬性:
- 姓名
- 性別
- 年齡
- 愛好
定義結構
用struct語句來定義一個帶有多個成員的新的資料型別,比如宣告一個person結構:(如果該名字表示的是結構體裡面的名字,這需要在名字前加’_’)
struct Person
{
public string _name; //表示姓名
public char _gender; //表示性別
public int _age; //表示年齡
public string _hobby; //表示愛好
}
下面程式將演示結構的使用:
using System;
namespace test
{
//結構是值型別資料結構,它使單一變數可以儲存各種資料型別的資料,用struct關鍵字來建立
struct Person
{
public string _name; //姓名
public char _gender; //性別
public int _age; //年齡
public string _hobby; //愛好
}
class Program
{
static void Main(string[] args)
{
Person aPerson; //宣告aPerson,型別為Person
Person bPerson; //宣告bPerson,型別為Person
/* aPerson 詳述 */
aPerson._name = "小紅";
aPerson._gender = '女';
aPerson._age = 12;
aPerson._hobby = "喜歡唱歌" ;
/* bPerson 詳述 */
bPerson._name = "小明";
bPerson._gender = '男';
bPerson._age = 15;
bPerson._hobby = "喜歡跳舞";
/* 列印aPerson的資訊 */
Console.WriteLine("姓名:{0}\n性別:{1}\n年齡:{2}\n愛好:{3}",aPerson._name,aPerson._gender,aPerson._age,aPerson._hobby);
Console.WriteLine();
/* 列印bPerson的資訊 */
Console.WriteLine("姓名:{0}\n性別:{1}\n年齡:{2}\n愛好:{3}", bPerson._name, bPerson._gender, bPerson._age, bPerson._hobby);
}
}
列印結果如下:
姓名:小紅
性別:女
年齡:12
愛好:喜歡唱歌
姓名:小明
性別:男
年齡:15
愛好:喜歡跳舞
請按任意鍵繼續. . .
C# 結構的特點
您已經用了一個簡單的名為 Books 的結構。在 C# 中的結構與傳統的 C 或 C++中的結構不同。C# 中的結構有以下特點:
- 結構可帶有方法、欄位、索引、屬性、運算子方法和事件。
- 結構可定義建構函式,但不能定義解構函式。但是,您不能為結構定義預設的建構函式。預設的建構函式是自動定義的,且不能被改變。
- 與類不同,結構不能繼承其他的結構或類。
- 結構不能作為其他結構或類的基礎結構。
- 結構可實現一個或多個介面。
- 結構成員不能指定為 abstract、virtual 或 protected。
- 當您使用 New 操作符建立一個結構物件時,會呼叫適當的建構函式來建立結構。與類不同,結構可以不使用 New 操作符即可被例項化。
- 如果不使用 New 操作符,只有在所有的欄位都被初始化之後,欄位才被賦值,物件才被使用。
列舉
列舉是一組命名整型常量。列舉型別是使用 enum 關鍵字宣告的。
C# 列舉是值資料型別。換句話說,列舉包含自己的值,且不能繼承或傳遞繼承。
宣告enum變數:
一般語法
enum <enum_name>
{
enumeration list
};
- enum_name 表示列舉型別的名字
enumeration 表示識別符號列表
列舉列表中的每個符號代表一個整數值,一個比它前面的符號大的整數值。預設情況下,第一個列舉符號的值是 0.
例項
using System;
namespace EnumApplication
{
class EnumProgram
{
enum Gender {
男,
女
};
static void Main(string[] args)
{
int GenderNan = (int)Gender.男;
int GenderNv = (int)Gender.女;
Console.WriteLine("Monday: {0}", GenderNan );
Console.WriteLine("Friday: {0}", GenderNv );
Console.ReadKey();
}
}
}
當上面的程式碼被編譯和執行時,它會產生下列結果:
GenderNan: 0
GenderNv: 1
相關推薦
C#之結構和列舉
結構 結構是值型別資料結構,它使變數可以儲存各種資料型別的相關資料,用struct關鍵字來建立結構。結構代表一個記錄,比如你想記錄一個人的各種屬性: 姓名 性別 年齡 愛好 定義結構 用struct語句來定義一個帶有多個成員的新的資料型別
C語言之結構和其他資料形式
1.結構變數 C語言中,提供了**結構變數(structure variable)**用於提高我們表示資料的能力,如果我們要列印一本書的圖書目錄,其中包含書名作者等等資訊,這樣我們需要這種資料形式既能包含字串,又能包含數字,而且各資訊獨立,此時我們就可以使用結構變數來儲存資料。 1.
C#學習筆記001-結構和列舉
public struct person //定義一個結構相當於定義一種新的資料型別,包含名字name,年齡age和性別gender { pub
web開發 c/s結構 和 b/s結構
pan control col 用戶 模型 web 客戶 格式 一課 web開發 c/s結構 和 b/s結構 c/s結構 --client/server 客戶端/服務器機構 如qq b/s結構 -- browser/server 瀏覽器/服務器結構 如網站 mvc設計
C之 goto 和 void(八)
C語言 goto void 我們在 C 語言中經常會見到 void ,也會偶爾見到 goto。那麽 C 語言中既然有 goto ,為什麽我們在代碼中見的很少呢?在以前很多的項目經驗中,我們得到這樣一條潛規則:一般項目都是禁用 goto 的,程序質量與 goto 的出現次數成反比。自
C之 const 和 volatile(九)
C語言 const volatile 在 C 語言中,我們經常會見到 const 和 volatile 這兩個關鍵字,那麽我們今天就來介紹下這兩個關鍵字。 先來介紹 const 關鍵字。提起 const 關鍵字,我們可能首先想到的是經過它修飾的變量便是常量了。其實我
C之 struct 和 union(十)
C語言 struct union 在 C 語言中我們經常會使用到 struct 和 union,那麽它們兩個各自有何特點呢?今天我們就一探究竟。 我們先來介紹下 struct 。它可以看做是變量的集合,那麽一個空的結構體占多大內存呢?這是一個有趣的問題,按照理論分析,
C之編譯和鏈接(十八)
C語言 編譯 靜態鏈接 動態鏈接 我們平時所做的編譯工作其實是由編譯器來完成的,那麽編譯器都是由哪幾部分構成的呢?包括四大部分:預處理器、編譯器、匯編器以及鏈接器組成。我們來看看一個由 file.c 文件是怎樣得到 file.o 文件的,如下 a> 預編譯:
C之 #error 和 #line(二十一)
C語言 #error #line 我們今天來講下 C 語言中的兩個比較偏僻的知識點,之所以說偏僻是因為在平時的代碼中我們見得很少。首先來說下 #error,它是用於生成一個編譯錯誤消息。用法如下:#error message;註意 message 不需要用雙引號包圍。#error
C++之MutexLock和MutexLockGuard封裝
執行 div unistd.h sta lock ptr cas turn sleep thread.h #ifndef __WD_MUTEXLOCK_H__ #define __WD_MUTEXLOCK_H__ #include <pthread.h>
C++之讀取和寫入檔案
C++之讀取和寫入檔案 在C++中使用std::ifstream來讀取檔案, 使用std::ofstream來寫入檔案,比如txt, yaml等檔案。 讀取檔案 #include <string> #include <fstream> std::string file_name
C++之結構體與類
C++中的結構體與類 對比C語言中的結構體 建構函式與解構函式 為什麼需要建構函式 建構函式的特點 建構函式的過載 解構函式 結構體與類的區別 總結 對比C語言中的結構體 在C語言中
C# 之 結構體(struct)---複合型別的資料結構
例題: /*建立學生結構體,輸出最高分數*/ /*使用結構體陣列 -----複合型別(string int float等) student[] students=ne
c/s結構和b/s結構的區別或其優缺點
c/s結構所謂"C/S"是指Client/Server(客戶機/伺服器)。C/S模式是一種兩層結構的系統:第一層是在客戶機系統上結合了表示與業務邏輯;第二層是通過網路結合了資料庫伺服器。 首先,互動性強是C/S固有的一個優點。在C/S中,客戶端有一套完整的應用程式,在出錯提示、線上幫助等方面都有強大的功能,並
C 之委託和事件
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
C++之佇列和優先佇列
C++ queue(佇列)Priority queue(優先佇列) 【queue】 C++佇列是一種容器介面卡,它給予程式設計師一種先進先出(FIFO)的資料結構。1.back() 返回一個引用,指向最後一個元素2.empty() 如果佇列空則返回真3.front()
C# 之 TcpClient和Socket
OSI七層網路架構 OSI中的層 功能 TCP/IP協議族應用層 檔案傳輸,電子郵件,檔案服務,虛擬終端; TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示層 資料格式化,程
C++之new 和 delete
new 和 delete要成對使用,且要採取相同形式。 使用new時,會發生2件事,1.記憶體被分配出來;2.針對此記憶體會有一個(更多)建構函式被呼叫; 使用delete,發生2件事,1.針對此記憶體的解構函式被呼叫;2.記憶體被釋放; 舉例: std::string
c#之image和byte相互轉換
//將image轉換成byte[]資料 private byte[] imageToByte(System.Drawing.Image _image) { MemoryStream ms = n
C++之繼承和動態記憶體分配
接下來看複製建構函式,預設複製建構函式執行成員複製,這對於動態記憶體分配來說是不合適的,但對於派生類成員來說是合適的,因此只需要考慮繼承的基類物件,成員複製將根據資料型別採用相應的複製方式,複製類成員或者整合的類元件的時候,則是使用該類的複製建構函式完成的。所以,派生類的預設複製建構函式使用顯