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

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

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

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

C# 用來(lái)開(kāi)發(fā)上位機(jī)挺舒服

STM32嵌入式開(kāi)發(fā) ? 來(lái)源:STM32嵌入式 ? 作者:沈丹 ? 2021-06-27 10:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作為嵌入式開(kāi)發(fā)者,已經(jīng)熟悉了C語(yǔ)言跟VS。推薦你也了解下C#,用來(lái)開(kāi)發(fā)上位機(jī)挺舒服。如果你仔細(xì)與其它語(yǔ)言比較,就會(huì)感覺(jué)到很香。

C#良好兼容了值類(lèi)型、引用類(lèi)型,在發(fā)展中逐步解決了其他高級(jí)語(yǔ)言沒(méi)解決好的問(wèn)題。很好的總結(jié)了前人的經(jīng)驗(yàn),在基礎(chǔ)語(yǔ)法上就區(qū)分了值類(lèi)型和引用類(lèi)型。對(duì)初次接觸編程的同學(xué)來(lái)說(shuō)這一點(diǎn)容易造成學(xué)習(xí)障礙,但是只要掌握了它,就會(huì)給實(shí)際工作帶來(lái)極大便利。

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

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

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

值類(lèi)型有一大特點(diǎn),就是能充分利用棧空間。高級(jí)語(yǔ)言的GC特性一直飽受詬病,但下面的Unity常見(jiàn)代碼,運(yùn)行時(shí)沒(méi)有GC:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C#的良好設(shè)計(jì)讓它有著越來(lái)越廣泛的應(yīng)用。有C語(yǔ)言基礎(chǔ)的朋友可以快速上手C#,適合開(kāi)發(fā)單片機(jī)的上位機(jī)。

編輯:jq

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

    關(guān)注

    5192

    文章

    20271

    瀏覽量

    331654
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    183

    文章

    7642

    瀏覽量

    145111
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4955

    瀏覽量

    73490

原文標(biāo)題:用C#開(kāi)發(fā)上位機(jī)挺舒服,文末送資料

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    上位機(jī)掉線(xiàn)檢測(cè)問(wèn)題分析

    在工業(yè)自動(dòng)化控制系統(tǒng)中,上位機(jī)與下位機(jī)(如PLC、單片機(jī)等)之間的通信穩(wěn)定性至關(guān)重要。上位機(jī)掉線(xiàn)
    的頭像 發(fā)表于 01-13 07:40 ?239次閱讀

    C#上位機(jī)實(shí)戰(zhàn)開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《C#上位機(jī)實(shí)戰(zhàn)開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 01-11 17:15 ?1次下載

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

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

    求助:CS32L015 開(kāi)發(fā)資料

    你好!可以將 CS32L015 的相關(guān)資料 ( 用戶(hù)手冊(cè)、Pack包、屏幕開(kāi)發(fā)上位機(jī)和keil對(duì)應(yīng)工程demo、IAP升級(jí)Boot和APP工程發(fā)送到 ) 發(fā)送到郵箱:1183218869@qq.com嗎?非常感謝!
    發(fā)表于 12-02 15:58

    上位機(jī)程序編寫(xiě)

    =serial.readAll();讀取串口信息 在硬件連接正確,軟件工作正常的情況下,定位模塊將接收到的信息通過(guò)串口發(fā)送給DDR200T開(kāi)發(fā)板,隨后蜂鳥(niǎo)處理器將通過(guò)開(kāi)發(fā)板上的串口將信息發(fā)送給計(jì)算機(jī),計(jì)算機(jī)上的上位
    發(fā)表于 10-28 06:40

    S7通信穩(wěn)不穩(wěn)?避開(kāi)這些上位機(jī)開(kāi)發(fā)常見(jiàn)雷區(qū)是關(guān)鍵!

    上位機(jī)使用S7通信涉及諸多要點(diǎn),稍不注意就容易踩坑。今天,我們就來(lái)詳細(xì)剖析那些最常見(jiàn)的‘雷區(qū)’。 一、連接類(lèi)型設(shè)置 以C#上位機(jī)使用Shar
    的頭像 發(fā)表于 08-08 15:03 ?744次閱讀
    S7通信穩(wěn)不穩(wěn)?避開(kāi)這些<b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b><b class='flag-5'>開(kāi)發(fā)</b>常見(jiàn)雷區(qū)是關(guān)鍵!

    C#上位機(jī)與運(yùn)動(dòng)控制卡網(wǎng)絡(luò)通訊的周期上報(bào)

    使用C#上位機(jī)編程實(shí)現(xiàn)運(yùn)動(dòng)控制卡網(wǎng)絡(luò)通訊的周期上報(bào)功能
    的頭像 發(fā)表于 06-26 13:59 ?693次閱讀
    <b class='flag-5'>C#</b><b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>與運(yùn)動(dòng)控制卡網(wǎng)絡(luò)通訊的周期上報(bào)

    下位機(jī)CY7C68013A發(fā)送數(shù)據(jù),上位機(jī)C#讀取數(shù)據(jù),510字節(jié)一幀,會(huì)丟幀或者幀內(nèi)錯(cuò)位是怎么回事?

    下位機(jī)CY7C68013A發(fā)送數(shù)據(jù),上位機(jī)C#在1個(gè)while循環(huán)內(nèi)不斷地讀取數(shù)據(jù),510字節(jié)1幀,1秒333幀、1秒667幀、1秒1333
    發(fā)表于 05-30 07:43

    上位機(jī)和下位機(jī)是什么關(guān)系

    上位機(jī)和下位機(jī)在工業(yè)自動(dòng)化、儀器儀表等控制領(lǐng)域中是相互協(xié)作、緊密配合的關(guān)系,以下從定義、通信方式、功能分工、協(xié)同作用幾個(gè)方面詳細(xì)闡述它們的關(guān)系: 定義與角色 上位
    的頭像 發(fā)表于 05-29 18:03 ?1276次閱讀

    如何用QT開(kāi)發(fā)一個(gè)USB3.0上位機(jī)?

    如何用QT開(kāi)發(fā)一個(gè)USB3.0上位機(jī)
    發(fā)表于 05-21 06:54

    玩轉(zhuǎn)C#/LABVIEW,斯撩

    **labview軟件開(kāi)發(fā) C#軟件開(kāi)發(fā) C#自定義控件Labview調(diào)用 labview和C#組合開(kāi)發(fā)
    發(fā)表于 04-02 22:44

    都說(shuō)上位機(jī)通信難,誰(shuí)能說(shuō)說(shuō)到底難在哪兒?

    前言 在工業(yè)自動(dòng)化和物聯(lián)網(wǎng)(IoT)領(lǐng)域,上位機(jī)通信一直被認(rèn)為是開(kāi)發(fā)過(guò)程中的一大難點(diǎn)。上位機(jī)通信扮演著至關(guān)重要的角色。
    的頭像 發(fā)表于 03-12 16:52 ?959次閱讀
    都說(shuō)<b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>通信難,誰(shuí)能說(shuō)說(shuō)到底難在哪兒?

    STM32/GD32開(kāi)發(fā)板基本串口RS232\\RS485通信及CAN接口 usbhid升級(jí) U盤(pán)升級(jí) sd卡升級(jí)升級(jí)學(xué)習(xí)方案開(kāi)發(fā)

    使用VS2022開(kāi)發(fā)平臺(tái),C#語(yǔ)言開(kāi)發(fā),該開(kāi)發(fā)板提供上位機(jī)工程源碼。 bin文件AES256加密解密升級(jí)功能!有以下例程:1、CAN總線(xiàn)升級(jí)
    發(fā)表于 02-27 14:56

    C#中使用OpenVINO?:輕松集成AI模型!

    作者:算力魔方創(chuàng)始人/英特爾創(chuàng)新大使劉力 C#不僅在PC游戲開(kāi)發(fā)、大型商業(yè)系統(tǒng)領(lǐng)域應(yīng)用廣泛,還成為開(kāi)源測(cè)控、機(jī)器視覺(jué)與運(yùn)動(dòng)控制,以及PC數(shù)集與分析領(lǐng)域中的主流開(kāi)發(fā)語(yǔ)言! 在開(kāi)源測(cè)控、機(jī)器視覺(jué)、數(shù)采
    的頭像 發(fā)表于 02-07 14:05 ?1802次閱讀
    <b class='flag-5'>C#</b>中使用OpenVINO?:輕松集成AI模型!