1. 程式人生 > >C#之結構和列舉

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++MutexLockMutexLockGuard封裝

執行 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# TcpClientSocket

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#imagebyte相互轉換

//將image轉換成byte[]資料 private byte[] imageToByte(System.Drawing.Image _image) { MemoryStream ms = n

C++繼承動態記憶體分配

        接下來看複製建構函式,預設複製建構函式執行成員複製,這對於動態記憶體分配來說是不合適的,但對於派生類成員來說是合適的,因此只需要考慮繼承的基類物件,成員複製將根據資料型別採用相應的複製方式,複製類成員或者整合的類元件的時候,則是使用該類的複製建構函式完成的。所以,派生類的預設複製建構函式使用顯