国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C#良好兼容了值類型/引用類型

STM32嵌入式開發 ? 來源:STM32嵌入式開發 ? 作者:STM32嵌入式開發 ? 2020-11-20 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

很多游戲開發者都是由于Unity而“被迫”使用C#的。但用過一段時間,都會由衷贊嘆:真香。

如果有些同學沒感覺到很香,有可能是沒有仔細和其它語言比較。

C#良好兼容了值類型/引用類型,在發展中逐步解決了其他高級語言沒解決好的問題。

縱觀主流語言,C語言在語法上是以值類型為基礎,借助指針實現引用類型;而Python/Lua等語言,是以引用類型為基礎。

論性能和細節控制力,C語言的設計上限更高;但是論簡易程度,Python更為統一、易用。這一基本矛盾在之前的語言里都沒有解決好。

而C#很好的總結了前人的經驗,在基礎語法上就區分了值類型和引用類型。對初次接觸編程的同學來說這一點容易造成學習障礙,但是只要掌握了它,就會給實際工作帶來極大便利。

反觀歷史,C#也曾經因為 值類型/引用類型 保守詬病,“拆箱”和“裝箱”一直是個招黑的設計。但后來我們看到,隨著泛型的成熟和普及,隨著泛型容器代替通用容器,裝箱和拆箱的問題已經在很大程度上解決了。

還有對異步的支持等等,C#的設計最初帶來了一些問題,但是最終還是交上了一份滿意的答卷。

充分利用??臻g,非常高效,做了一部分C/C++擅長的事。

值類型有一大特點,就是能充分利用??臻g。高級語言的GC特性一直飽受詬病,但下面的Unity常見代碼,運行時沒有GC:

// 通過輸入的三維向量,移動物體的位置void Move(Vector3 input){ // 演示代碼,有意分成很多行 input = input.normalized; Vector3 move = input * 2.0f; move *= Time.deltaTime. transform.position += move; }

這段代碼沒有在堆上分配空間,你所看到的操作全都是在棧上進行的,GC壓力為0。我認為這是C#最令人驚艷的一點。

一般來說數組長度較長,默認分配在堆上。但是C#也提供了便利的語法,在棧上分配數組,對項目后期優化來說簡直是神技:

public void unsafe foo(){ int* bar = stackalloc int [10];}

沒錯,C#依然保留了指針,但一般僅用于局部的unsafe代碼。在局部熱點可以完全解放性能。

良好的語法設計和庫函數設計,引導程序員寫出更快且更自然的代碼。

C#中最常用的容器List,也具有一些良好的設計,當然其它語言也有類似的優點:

// 新建一個list,長度為0。但在堆中預留10萬個位置 List list = new List(100000); // 加入很多元素,由于容量足夠沒有GC for (int i=0; i<89000; i++) { list.Add(i); } // 用過以后清空list,長度變成0 list.Clear(); // 但容量還是10萬,繼續增加元素還是沒有GC for (int i = 0; i < 99000; i++) { list.Add(i); }

list在預留空間充足時,添加元素不會產生GC。而且List和值類型結合使用,在內存占用上也有優勢。當然,很多其它語言也有類似的設計,可以說別的語言做的好的部分,C#做的也一樣好。

繼承、泛型、接口、類型約束等等高級特性,都有著良好且自洽的設計。

最初接觸C#的時候,看看int的原型,收獲很大:

public struct Int32 : IFormattable, IConvertible, IComparable, IComparable, IEquatable { // .... }

熟悉C++的人,經過思考,可以很好的理解IComparable、IEquatable以及它們的泛型形式。同時也能猜出“Interface”的概念。思考C#的底層設計,給人的感覺就是自然、規范、恰到好處。

總之,C#語言及其標準庫的設計,非常值得借鑒和推崇。

C#的良好設計讓它在游戲開發領域走出了一條光明大道,在其它領域也有著越來越廣泛的應用。有C語言基礎的朋友可以快速上手C#,適合開發單片機上位機。

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    183

    文章

    7644

    瀏覽量

    145569
  • C++
    C++
    +關注

    關注

    22

    文章

    2123

    瀏覽量

    77110
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90024

原文標題:用過C#的都說香,也送你一份秘籍

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于凌羽派的OpenHarmony北向應用開發:ArkTS語法-數據類型和變量聲明

    和訪問都是直接的,比較時直接比較其引用類型包括對象、數組和函數等復雜數據結構。這些類型通過引用訪問數據,對象和數組可以包含多個
    發表于 02-26 14:24

    AI智能體開發C#軟件的臨時方案

    AI智能體 (Agent) 可以幫你生成完整的C# 工程,包括主體代碼、WinForm界面設計和引用添加。但是目前Visual Studio (VS) 的Agent功能好像還不太完善,時常出一些奇怪
    的頭像 發表于 12-30 10:50 ?727次閱讀
    AI智能體開發<b class='flag-5'>C#</b>軟件的臨時方案

    枚舉類型的講解

    枚舉是一個基本的數據類型,它可以讓數據更簡潔。 如果寫一個判斷星期的文章,我們當然可以使用宏定義來使代碼更加易懂,不過: #define MON 1 #define TUE 2
    發表于 12-08 08:14

    C語言自動類型轉換

    一、自動類型轉換 數據類型存在自動轉換的情況. 自動轉換發生在不同數據類型運算時,在編譯的時候自動完成。 char類型數據轉換為int類型
    發表于 11-25 08:04

    C語言強制類型轉換

    強制類型轉換是通過定義類型轉換運算來實現的。其一般形式為: (數據類型) (表達式) 其作用是把表達式的運算結果強制轉換成類型說明符所表示的類型
    發表于 11-24 06:32

    發布元服務配置應用內資費類型和應用內商品

    一、設置應用內資費類型,用于標識用戶使用元服務時需要付費的類型?;跇I務場景,支持選擇多個類型。 應用內資費類型包括: 激活收費 道具收費 關卡收費 購買虛擬幣 部分章節收費(圖書閱讀
    發表于 11-19 10:18

    如何從電容去區分電容的類型及使用范圍

    ,你幾乎可以立刻縮小電容類型的選擇范圍。電容VS電容類型& 應用范圍速查表 下表清晰地展示不同容量范圍所對應的主流電容類型及其典
    發表于 11-13 15:20

    ATE自動測試系統能兼容哪些類型的電源測試?

    在當今電子設備無處不在的時代,電源的質量和可靠性直接影響著終端產品的性能與壽命。而確保電源質量的關鍵工具——ATE自動測試系統,已成為電源設計和制造過程中不可或缺的一環。本文將和大家介紹一下源儀電子的ATE測試系統能夠兼容的電源測試類型,幫助您了解這一高效、精確的測試解決
    的頭像 發表于 10-29 14:42 ?686次閱讀
    ATE自動測試系統能<b class='flag-5'>兼容</b>哪些<b class='flag-5'>類型</b>的電源測試?

    單模光纖線有幾種類型

    ,1550nm處損耗最低(約0.2dB/km),分為A/B/C/D四類,其中D類性能最優。 典型應用:城域網、接入網、短距離傳輸(≤40km),成本敏感型項目。 優勢:兼容性好,成本低,是應用最廣泛的光纖類型。 G.653(色散
    的頭像 發表于 09-11 10:00 ?2272次閱讀

    工業相機的類型及不同類型的應用

    工業相機根據不同的分類標準,可分為多種類型,每種類型都有其獨特的應用場景。
    的頭像 發表于 08-29 17:07 ?797次閱讀
    工業相機的<b class='flag-5'>類型</b>及不同<b class='flag-5'>類型</b>的應用

    SQL 通用數據類型

    data type. SQL 開發人員必須在創建 SQL 表時決定表中的每個列將要存儲的數據的類型。數據類型是一個標簽,是便于 SQL 了解每個列期望存儲什么類型的數據的指南,它也標識
    的頭像 發表于 08-18 09:46 ?710次閱讀

    【原創】labview 通過“引用調用“ 的快捷用法,不需編程獲取VI引用

    labview的“通過引用調用”函數在調用嚴格類型VI時,通常需要獲取VI的引用。該函數的輸入端也確實有引用接口,如圖: 但是該函數還有一個快捷用法,右鍵單擊
    發表于 07-30 17:53

    可以在哪里修改以更改非 PD 類型 C 中不同的 Rp 等級?

    到 ccg3pa 時更改 rp 的方法 在那個 non_pd_type_C 文件中,我首先設置那個 Rp 等級,然后在設置為 C 類型之后將其設置為非 PD
    發表于 05-27 07:16

    光刻膠的類型及特性

    光刻膠類型及特性光刻膠(Photoresist),又稱光致抗蝕劑,是芯片制造中光刻工藝的核心材料。其性能直接影響芯片制造的精度、效率和可靠性。本文介紹光刻膠類型和光刻膠特性。
    的頭像 發表于 04-29 13:59 ?9444次閱讀
    光刻膠的<b class='flag-5'>類型</b>及特性

    玩轉C#/LABVIEW,斯撩

    **labview軟件開發 C#軟件開發 C#自定義控件Labview調用 labview和C#組合開發** 斯撩,斯撩
    發表于 04-02 22:44