在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C#/ C#結(jié)構(gòu)體
C#屬性(Properties)
C#與Java比較
C#方法
C#枚舉
C#關(guān)鍵字
C# StreamReader類
C#不安全代碼
C#文件(I/O)
C#匿名方法
C#線程同步
C# Thread類
C#主線程
C#數(shù)據(jù)類型
C# FileStream類
C#預(yù)處理指令
C#繼承
C#循環(huán)
C#決策結(jié)構(gòu)
C#集合
C#反射
C#類型轉(zhuǎn)換
C#泛型
C# StringReader類
C#歷史
C#運算符重載
C#屬性
C#線程實例:Sleep()方法
C#線程示例:優(yōu)先級
C#線程實例:Join()方法
C# BinaryReader類
C#類
C#索引器
C# BinaryWriter類
C#序列化
C#常量和文字
C#程序結(jié)構(gòu)
C#封裝
C#事件
C#可空類型(nullable)
C#基本語法
C#異常處理
C#教程
C#接口
C# System.IO命名空間
C#線程命名實例
C# StringWriter類
C#線程實例
C#數(shù)組
C#正則表達(dá)式
C#命名空間
C#反序列化
C#與C++比較
C# TextWriter類
C#多線程
C#字符串
C#是什么?
C#變量
C# FileInfo類
C#線程實例:Abort()方法
C#結(jié)構(gòu)體
C#運算符
C#入門程序
C#多線程生命周期
C# TextReader類
C# DirectoryInfo類
C#委托

C#結(jié)構(gòu)體

在 C# 中,結(jié)構(gòu)體是一種值類型數(shù)據(jù)類型。它可以幫助您使單個變量保存各種數(shù)據(jù)類型的相關(guān)數(shù)據(jù)在一起。struct關(guān)鍵字用于定義和創(chuàng)建一個結(jié)構(gòu)。

結(jié)構(gòu)體用于表示記錄信息。假設(shè)您想在圖書館中跟蹤記錄書籍信息。假設(shè)希望跟蹤每本書的以下屬性:

  • 標(biāo)題
  • 作者
  • 學(xué)科
  • 圖書編號

定義結(jié)構(gòu)

要定義一個結(jié)構(gòu),需要使用struct語句。struct語句定義了一個新的數(shù)據(jù)類型,有多個程序的成員。

例如,以下是聲明Book結(jié)構(gòu)體的方式:

struct Books
{
   public string title;
   public string author;
   public string subject;
   public int book_id;
};

以下示例程序顯示如何使用結(jié)構(gòu)體:

using System;
struct Books
{
    public string title;
    public string author;
    public string subject;
    public int book_id;
};

public class testStructure
{
    public static void Main(string[] args)
    {

        Books Book1;   /* Declare Book1 of type Book */
        Books Book2;   /* Declare Book2 of type Book */

        /* book 1 specification */
        Book1.title = "C Programming";
        Book1.author = "Maxsu";
        Book1.subject = "C Programming Tutorial";
        Book1.book_id = 5493427;

        /* book 2 specification */
        Book2.title = "Telecom Billing";
        Book2.author = "Sukida";
        Book2.subject = "Telecom Billing Tutorial";
        Book2.book_id = 8493480;

        /* print Book1 info */
        Console.WriteLine("Book 1 title : {0}", Book1.title);
        Console.WriteLine("Book 1 author : {0}", Book1.author);
        Console.WriteLine("Book 1 subject : {0}", Book1.subject);
        Console.WriteLine("Book 1 book_id :{0}", Book1.book_id);

        /* print Book2 info */
        Console.WriteLine("Book 2 title : {0}", Book2.title);
        Console.WriteLine("Book 2 author : {0}", Book2.author);
        Console.WriteLine("Book 2 subject : {0}", Book2.subject);
        Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);

        Console.ReadKey();

    }
}

當(dāng)編譯和執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果:

Book 1 title : C Programming
Book 1 author : Maxsu
Book 1 subject : C Programming Tutorial
Book 1 book_id :5493427
Book 2 title : Telecom Billing
Book 2 author : Sukida
Book 2 subject : Telecom Billing Tutorial
Book 2 book_id : 8493480

C# 結(jié)構(gòu)體的特點

在上面地示例中,我們已經(jīng)使用了一個名為Books的簡單結(jié)構(gòu)體。 C# 中的結(jié)構(gòu)與傳統(tǒng)的C語言或C++中的結(jié)構(gòu)完全不同。 C# 結(jié)構(gòu)具有以下特點:

  • 結(jié)構(gòu)體可以有方法,字段,索引器,屬性,操作符方法和事件。
  • 結(jié)構(gòu)體可以有定義的構(gòu)造函數(shù),但不能是析構(gòu)函數(shù)。但是不能為結(jié)構(gòu)定義默認(rèn)構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)是自動定義的,不能被更改。
  • 與類不同,結(jié)構(gòu)體不能繼承其他結(jié)構(gòu)體或類。
  • 結(jié)構(gòu)體不能用作其他結(jié)構(gòu)或類的基礎(chǔ)。
  • 結(jié)構(gòu)體可以實現(xiàn)一個或多個接口。
  • 結(jié)構(gòu)成員不能被指定為抽象,虛擬或受保護(hù)。
  • 當(dāng)使用New運算符創(chuàng)建一個struct對象時,它將調(diào)用相應(yīng)的構(gòu)造函數(shù)。 與類不同,可以在不使用New運算符的情況下實例化結(jié)構(gòu)體。
  • 如果不使用New運算符,則字段保持未分配,并且在所有字段初始化之前不能使用對象。

類與結(jié)構(gòu)區(qū)別

類和結(jié)構(gòu)有以下基本差別:

  • 類是引用類型,結(jié)構(gòu)體是值類型
  • 結(jié)構(gòu)體不支持繼承
  • 結(jié)構(gòu)體不能有默認(rèn)構(gòu)造函數(shù)

根據(jù)上述討論,下面我們來重寫上一個例子:

using System;
struct Books
{
    private string title;
    private string author;
    private string subject;
    private int book_id;
    public void getValues(string t, string a, string s, int id)
    {
        title = t;
        author = a;
        subject = s;
        book_id = id;
    }
    public void display()
    {
        Console.WriteLine("Title : {0}", title);
        Console.WriteLine("Author : {0}", author);
        Console.WriteLine("Subject : {0}", subject);
        Console.WriteLine("Book_id :{0}", book_id);
    }

};

public class testStructure
{
    public static void Main(string[] args)
    {

        Books Book1 = new Books();   /* Declare Book1 of type Book */
        Books Book2 = new Books();   /* Declare Book2 of type Book */

        /* book 1 specification */
        Book1.getValues("C Programming",
        "Maxsu", "C Programming Tutorial", 749540712);

        /* book 2 specification */
        Book2.getValues("Telecom Billing",
        "Sukida", "Telecom Billing Tutorial", 59570011);

        /* print Book1 info */
        Book1.display();

        /* print Book2 info */
        Book2.display();

        Console.ReadKey();

    }
}

當(dāng)編譯和執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果:

Title : C Programming
Author : Maxsu
Subject : C Programming Tutorial
Book_id :749540712
Title : Telecom Billing
Author : Sukida
Subject : Telecom Billing Tutorial
Book_id :59570011

上一篇:C#匿名方法下一篇:C#正則表達(dá)式