chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

縱觀主流語言,C語言在語法上是以值類型為基礎(chǔ),借助指針實(shí)現(xiàn)引用類型;而Python/Lua等語言,是以引用類型為基礎(chǔ)。

論性能和細(xì)節(jié)控制力,C語言的設(shè)計(jì)上限更高;但是論簡(jiǎn)易程度,Python更為統(tǒng)一、易用。這一基本矛盾在之前的語言里都沒有解決好。

而C#很好的總結(jié)了前人的經(jīng)驗(yàn),在基礎(chǔ)語法上就區(qū)分了值類型和引用類型。對(duì)初次接觸編程的同學(xué)來說這一點(diǎn)容易造成學(xué)習(xí)障礙,但是只要掌握了它,就會(huì)給實(shí)際工作帶來極大便利。

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

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

充分利用棧空間,非常高效,做了一部分C/C++擅長(zhǎng)的事。

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

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

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

一般來說數(shù)組長(zhǎng)度較長(zhǎng),默認(rèn)分配在堆上。但是C#也提供了便利的語法,在棧上分配數(shù)組,對(duì)項(xiàng)目后期優(yōu)化來說簡(jiǎn)直是神技:

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

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

良好的語法設(shè)計(jì)和庫(kù)函數(shù)設(shè)計(jì),引導(dǎo)程序員寫出更快且更自然的代碼。

C#中最常用的容器List,也具有一些良好的設(shè)計(jì),當(dāng)然其它語言也有類似的優(yōu)點(diǎn):

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

list在預(yù)留空間充足時(shí),添加元素不會(huì)產(chǎn)生GC。而且List和值類型結(jié)合使用,在內(nèi)存占用上也有優(yōu)勢(shì)。當(dāng)然,很多其它語言也有類似的設(shè)計(jì),可以說別的語言做的好的部分,C#做的也一樣好。

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

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

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

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

總之,C#語言及其標(biāo)準(zhǔn)庫(kù)的設(shè)計(jì),非常值得借鑒和推崇。

C#的良好設(shè)計(jì)讓它在游戲開發(fā)領(lǐng)域走出了一條光明大道,在其它領(lǐng)域也有著越來越廣泛的應(yīng)用。有C語言基礎(chǔ)的朋友可以快速上手C#,適合開發(fā)單片機(jī)上位機(jī)。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7646

    瀏覽量

    146189
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2131

    瀏覽量

    77409
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4888

    瀏覽量

    90321

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

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)問風(fēng)扇連接器的具體類型是什么?

    我買了多個(gè) 2 針風(fēng)扇,它們與主板不兼容。 此外,我購(gòu)買了 JST XH2.54-2P、JST 2 針迷你、JST SM 2 針連接器,但兩者都不兼容。 看起來大多數(shù)粉絲都配備 JST SM 2 / JST XH2.54-2P
    發(fā)表于 03-09 08:08

    基于凌羽派的OpenHarmony北向應(yīng)用開發(fā):ArkTS語法-數(shù)據(jù)類型和變量聲明

    和訪問都是直接的,比較時(shí)直接比較其。 引用類型包括對(duì)象、數(shù)組和函數(shù)等復(fù)雜數(shù)據(jù)結(jié)構(gòu)。這些類型通過引用訪問數(shù)據(jù),對(duì)象和數(shù)組可以包含多個(gè)
    發(fā)表于 02-26 14:24

    AI智能體開發(fā)C#軟件的臨時(shí)方案

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

    枚舉類型的講解

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

    C語言自動(dòng)類型轉(zhuǎn)換

    一、自動(dòng)類型轉(zhuǎn)換 數(shù)據(jù)類型存在自動(dòng)轉(zhuǎn)換的情況. 自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型運(yùn)算時(shí),在編譯的時(shí)候自動(dòng)完成。 char類型數(shù)據(jù)轉(zhuǎn)換為int類型
    發(fā)表于 11-25 08:04

    C語言強(qiáng)制類型轉(zhuǎn)換

    強(qiáng)制類型轉(zhuǎn)換是通過定義類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的。其一般形式為: (數(shù)據(jù)類型) (表達(dá)式) 其作用是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型
    發(fā)表于 11-24 06:32

    發(fā)布元服務(wù)配置應(yīng)用內(nèi)資費(fèi)類型和應(yīng)用內(nèi)商品

    一、設(shè)置應(yīng)用內(nèi)資費(fèi)類型,用于標(biāo)識(shí)用戶使用元服務(wù)時(shí)需要付費(fèi)的類型?;跇I(yè)務(wù)場(chǎng)景,支持選擇多個(gè)類型。 應(yīng)用內(nèi)資費(fèi)類型包括: 激活收費(fèi) 道具收費(fèi) 關(guān)卡收費(fèi) 購(gòu)買虛擬幣 部分章節(jié)收費(fèi)(圖書閱讀
    發(fā)表于 11-19 10:18

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

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

    ATE自動(dòng)測(cè)試系統(tǒng)能兼容哪些類型的電源測(cè)試?

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

    單模光纖線有幾種類型

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

    工業(yè)相機(jī)的類型及不同類型的應(yīng)用

    工業(yè)相機(jī)根據(jù)不同的分類標(biāo)準(zhǔn),可分為多種類型,每種類型都有其獨(dú)特的應(yīng)用場(chǎng)景。
    的頭像 發(fā)表于 08-29 17:07 ?956次閱讀
    工業(yè)相機(jī)的<b class='flag-5'>類型</b>及不同<b class='flag-5'>類型</b>的應(yīng)用

    SQL 通用數(shù)據(jù)類型

    data type. SQL 開發(fā)人員必須在創(chuàng)建 SQL 表時(shí)決定表中的每個(gè)列將要存儲(chǔ)的數(shù)據(jù)的類型。數(shù)據(jù)類型是一個(gè)標(biāo)簽,是便于 SQL 了解每個(gè)列期望存儲(chǔ)什么類型的數(shù)據(jù)的指南,它也標(biāo)識(shí)
    的頭像 發(fā)表于 08-18 09:46 ?881次閱讀

    【原創(chuàng)】labview 通過“引用調(diào)用“ 的快捷用法,不需編程獲取VI引用

    labview的“通過引用調(diào)用”函數(shù)在調(diào)用嚴(yán)格類型VI時(shí),通常需要獲取VI的引用。該函數(shù)的輸入端也確實(shí)有引用接口,如圖: 但是該函數(shù)還有一個(gè)快捷用法,右鍵單擊
    發(fā)表于 07-30 17:53

    HarmonyOS NEXT應(yīng)用開發(fā)-Notification Kit(用戶通知服務(wù))通知類型、級(jí)別與渠道

    :SystemCapability.Notification.Notification 名稱 說明 NOTIFICATION_CONTENT_BASIC_TEXT 0 普通類型通知
    發(fā)表于 06-09 14:39

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

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