最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于C#結(jié)構(gòu)體 你需要知道的

 更新時(shí)間:2020年06月04日 15:52:17   作者:Tynam Yang  
這篇文章主要介紹了關(guān)于C#結(jié)構(gòu)體的相關(guān)知識(shí),以及使用方法,文中代碼非常詳細(xì),幫助大家更好的參考和學(xué)習(xí),感興趣的朋友可以了解下

結(jié)構(gòu)體概念

  在C#中,結(jié)構(gòu)體是值類(lèi)型,一般適用于表示類(lèi)似Point、Rectangle、Color的對(duì)象

  值類(lèi)型能夠降低對(duì)堆的管理、使用。降低垃圾回收,表現(xiàn)出更好的性能。可是值類(lèi)型也有不好的一面。會(huì)涉及到裝箱拆箱等操作

結(jié)構(gòu)體聲明

  結(jié)構(gòu)體聲明定義了一種新的數(shù)據(jù)類(lèi)型,這個(gè)數(shù)據(jù)類(lèi)型可以為程序包含一個(gè)以上的成員變量

  要定義一個(gè)結(jié)構(gòu),需要使用struct語(yǔ)句

聲明一個(gè)學(xué)校的結(jié)構(gòu)

struct School
{
  public int name;
  public string head_master;
  public int class_number;
  public int student_number;
};

結(jié)構(gòu)體的使用

using System;

struct School
{
  public int school_id;
  public string head_master;
  public int class_number;
  public int student_number;
};

public class testStructure
{
  public static void Main(string[] args)
  {
    School TianYangHighSchool; // 聲明一個(gè)學(xué)校

    // 學(xué)校詳細(xì)
    TianYangHighSchool.school_id = 12345;
    TianYangHighSchool.head_master = "Tynam.Yang";
    TianYangHighSchool.class_number = 6;
    TianYangHighSchool.student_number = 456;

    // 打印學(xué)校信息
    Console.WriteLine("田陽(yáng)高中學(xué)校的學(xué)校id是:{0}," +
      "校長(zhǎng)名字是:{1}," +
      "一共有{2}個(gè)教室," +
      "總共有{3}名學(xué)校",
      TianYangHighSchool.school_id,
      TianYangHighSchool.head_master,
      TianYangHighSchool.class_number,
      TianYangHighSchool.student_number);

    Console.ReadKey();
  }
}

運(yùn)行結(jié)果

結(jié)構(gòu)體特點(diǎn)

  結(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ù)是自動(dòng)定義的,不能被更改

  與類(lèi)不同,結(jié)構(gòu)體不能繼承其他結(jié)構(gòu)體或類(lèi)

  結(jié)構(gòu)體不能用作其他結(jié)構(gòu)或類(lèi)的基礎(chǔ)

  結(jié)構(gòu)體可以實(shí)現(xiàn)一個(gè)或多個(gè)接口

  結(jié)構(gòu)成員不能被指定為抽象,虛擬或受保護(hù)

  當(dāng)使用New運(yùn)算符創(chuàng)建一個(gè)struct對(duì)象時(shí),它將調(diào)用相應(yīng)的構(gòu)造函數(shù)。 與類(lèi)不同,可以在不使用New運(yùn)算符的情況下實(shí)例化結(jié)構(gòu)體

  如果不使用New運(yùn)算符,則字段保持未分配,并且在所有字段初始化之前不能使用對(duì)象

結(jié)構(gòu)體 VS 類(lèi)

  結(jié)構(gòu)體是值類(lèi)型,存儲(chǔ)在棧上,類(lèi)是引用類(lèi)型,存儲(chǔ)在托管堆上,結(jié)構(gòu)體在聲明的時(shí)候就已經(jīng)為其分配棧上的內(nèi)存了,而類(lèi)需要用 new為其分配堆上面的內(nèi)存

  結(jié)構(gòu)體是隱式密封的,不能用 sealed 和 abstract 修飾,結(jié)構(gòu)體不能被繼承,類(lèi)可以被繼承

  結(jié)構(gòu)體中的實(shí)例字段只能聲明,不能賦值,而類(lèi)沒(méi)有限制,結(jié)構(gòu)體只聲明沒(méi)有用 new 進(jìn)行初始化時(shí),可以給他的實(shí)例字段賦值,而類(lèi)不行

  結(jié)構(gòu)體沒(méi)有析構(gòu)函數(shù),結(jié)構(gòu)體中的方法不能用 virtual 和 abstract 修飾,但是可以用 override 修飾,用來(lái)重寫(xiě)父類(lèi)的方法

  結(jié)構(gòu)體不能顯示給出默認(rèn)構(gòu)造函數(shù)(無(wú)參數(shù)的構(gòu)造),無(wú)論有沒(méi)有自定義構(gòu)造,默認(rèn)構(gòu)造都隱式存在,而類(lèi)中有自定義構(gòu)造函數(shù)時(shí),默認(rèn)構(gòu)造會(huì)被隱藏,要想調(diào)用默認(rèn)構(gòu)造,必須顯示給出默認(rèn)構(gòu)造

  結(jié)構(gòu)體的自定義構(gòu)造函數(shù)必須初始化所有的實(shí)例字段和沒(méi)有初始化的非靜態(tài)屬性,類(lèi)沒(méi)有限制

結(jié)構(gòu)與類(lèi)的選擇

  堆棧的空間有限,對(duì)于大量的邏輯的對(duì)象,創(chuàng)建類(lèi)要比創(chuàng)建結(jié)構(gòu)好一些

  結(jié)構(gòu)表示如點(diǎn)、矩形和顏色這樣的輕量對(duì)象,例如,如果聲明一個(gè)含有 1000 個(gè)點(diǎn)對(duì)象的數(shù)組,則將為引用每個(gè)對(duì)象分配附加的內(nèi)存。在此情況下,結(jié)構(gòu)的成本較低

  在表現(xiàn)抽象和多級(jí)別的對(duì)象層次時(shí),類(lèi)是最好的選擇

  大多數(shù)情況下該類(lèi)型只是一些數(shù)據(jù)時(shí),結(jié)構(gòu)時(shí)最佳的選擇體的使用

以上就是關(guān)于C#結(jié)構(gòu)體 你需要知道的的詳細(xì)內(nèi)容,更多關(guān)于c#結(jié)構(gòu)體的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#實(shí)現(xiàn)獲取鼠標(biāo)句柄的方法

    C#實(shí)現(xiàn)獲取鼠標(biāo)句柄的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)獲取鼠標(biāo)句柄的方法,詳細(xì)的講述了實(shí)現(xiàn)獲取鼠標(biāo)句柄的具體步驟及實(shí)現(xiàn)方法,并附有完整的實(shí)例源碼供大家參考,需要的朋友可以參考下
    2014-09-09
  • C# 9 新特性——record的相關(guān)總結(jié)

    C# 9 新特性——record的相關(guān)總結(jié)

    這篇文章主要介紹了C# 9 新特性——record的相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用c# 9的新特性,感興趣的朋友可以了解下
    2021-02-02
  • List轉(zhuǎn)換成DataSet實(shí)現(xiàn)代碼

    List轉(zhuǎn)換成DataSet實(shí)現(xiàn)代碼

    怎樣把List轉(zhuǎn)換成DataSet本人很是疑惑,于是搜集整理一番,需要的朋友可以參考下
    2012-12-12
  • 如何利用Jenkins + TFS為.Net Core實(shí)現(xiàn)持續(xù)集成/部署詳解

    如何利用Jenkins + TFS為.Net Core實(shí)現(xiàn)持續(xù)集成/部署詳解

    這篇文章主要給大家介紹了關(guān)于如何利用Jenkins + TFS為.Net Core實(shí)現(xiàn)持續(xù)集成/部署的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • Unity利用UGUI制作提示框效果

    Unity利用UGUI制作提示框效果

    這篇文章主要為大家詳細(xì)介紹了Unity利用UGUI制作提示框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C# string轉(zhuǎn)unicode字符的實(shí)現(xiàn)

    C# string轉(zhuǎn)unicode字符的實(shí)現(xiàn)

    本文主要介紹了C# string轉(zhuǎn)unicode字符的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例

    c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例

    這篇文章主要介紹了c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • c#注冊(cè)客戶端事件示例

    c#注冊(cè)客戶端事件示例

    這篇文章主要介紹了c#注冊(cè)客戶端事件使用示例,大家參考使用吧
    2014-01-01
  • C#無(wú)限參數(shù)的寫(xiě)法

    C#無(wú)限參數(shù)的寫(xiě)法

    這篇文章主要介紹了C#無(wú)限參數(shù)的寫(xiě)法,通過(guò)循環(huán)遍歷再結(jié)合paras.Add方法實(shí)現(xiàn)無(wú)限參數(shù)的功能,是比較實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12
  • C#程序窗體間使用回調(diào)事件方式通訊示例

    C#程序窗體間使用回調(diào)事件方式通訊示例

    C#有事件這個(gè)東西,為啥不用呢,而且事件在窗體通信方面,有著更為方便的作用,我們知道事件實(shí)際上就是狀態(tài)的捕獲,數(shù)據(jù)互相操作的例子
    2013-12-12

最新評(píng)論

吉隆县| 黎川县| 明水县| 弋阳县| 曲松县| 原阳县| 梁山县| 治县。| 浠水县| 格尔木市| 天门市| 南涧| 铜川市| 南涧| 秭归县| 横峰县| 巴林右旗| 筠连县| 宣城市| 凤凰县| 丽水市| 宾川县| 天津市| 和硕县| 涟水县| 乌苏市| 崇州市| 休宁县| 隆昌县| 淮安市| 涿州市| 南涧| 宁远县| 平安县| 诸城市| 康乐县| 鄂尔多斯市| 娄烦县| 周至县| 寻乌县| 罗城|