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

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

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

3天內不再提示

C# 用來開發上位機挺舒服

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

掃碼添加小助手

加入工程師交流群

作為嵌入式開發者,已經熟悉了C語言跟VS。推薦你也了解下C#,用來開發上位機挺舒服。如果你仔細與其它語言比較,就會感覺到很香。

C#良好兼容了值類型、引用類型,在發展中逐步解決了其他高級語言沒解決好的問題。很好的總結了前人的經驗,在基礎語法上就區分了值類型和引用類型。對初次接觸編程的同學來說這一點容易造成學習障礙,但是只要掌握了它,就會給實際工作帶來極大便利。

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

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

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

值類型有一大特點,就是能充分利用棧空間。高級語言的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《int》 list = new List《int》(100000);// 加入很多元素,由于容量足夠沒有GCfor (int i=0; i《89000; i++) {list.Add(i); }// 用過以后清空list,長度變成0list.Clear();// 但容量還是10萬,繼續增加元素還是沒有GCfor (int i = 0; i 《 99000; i++) {list.Add(i); }

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

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

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

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

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

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

C#的良好設計讓它有著越來越廣泛的應用。有C語言基礎的朋友可以快速上手C#,適合開發單片機的上位機。

編輯:jq

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

    關注

    5199

    文章

    20454

    瀏覽量

    334269
  • C語言
    +關注

    關注

    183

    文章

    7644

    瀏覽量

    145643
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    74000

原文標題:用C#開發上位機挺舒服,文末送資料

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    不懂編程,怎么搞定電子儀表上位軟件?零代碼搞定上位軟件開發

    “不懂編程,怎么搞定電子儀表上位軟件?”這是很多電子儀表用戶的共同困惑。傳統上位開發被“專業編程”門檻牢牢限制,即便你對測試需求了如指掌
    的頭像 發表于 01-27 17:19 ?572次閱讀
    不懂編程,怎么搞定電子儀表<b class='flag-5'>上位</b><b class='flag-5'>機</b>軟件?零代碼搞定<b class='flag-5'>上位</b><b class='flag-5'>機</b>軟件<b class='flag-5'>開發</b>

    上位掉線檢測問題分析

    在工業自動化控制系統中,上位與下位(如PLC、單片等)之間的通信穩定性至關重要。上位掉線
    的頭像 發表于 01-13 07:40 ?508次閱讀

    C#上位實戰開發指南

    電子發燒友網站提供《C#上位實戰開發指南.pdf》資料免費下載
    發表于 01-11 17:15 ?6次下載

    STM32H5開發陀螺儀LSM6DSV16X(5)----上報匿名上位

    本文介紹了如何將 LSM6DSV16X 傳感器的姿態數據通過匿名通信協議上報到上位。通過獲取傳感器的四元數數據,并將其轉換為歐拉角(Roll、Pitch、Yaw),然后按照協議格式化數據幀并通過
    的頭像 發表于 12-30 17:06 ?2996次閱讀
    STM32H5<b class='flag-5'>開發</b>陀螺儀LSM6DSV16X(5)----上報匿名<b class='flag-5'>上位</b><b class='flag-5'>機</b>

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

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

    求助:CS32L015 開發資料

    你好!可以將 CS32L015 的相關資料 ( 用戶手冊、Pack包、屏幕開發上位和keil對應工程demo、IAP升級Boot和APP工程發送到 ) 發送到郵箱:1183218869@qq.com嗎?非常感謝!
    發表于 12-02 15:58

    上位程序編寫

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

    S7通信穩不穩?避開這些上位開發常見雷區是關鍵!

    上位使用S7通信涉及諸多要點,稍不注意就容易踩坑。今天,我們就來詳細剖析那些最常見的‘雷區’。 一、連接類型設置 以C#上位使用Shar
    的頭像 發表于 08-08 15:03 ?890次閱讀
    S7通信穩不穩?避開這些<b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>開發</b>常見雷區是關鍵!

    C#上位與運動控制卡網絡通訊的周期上報

    使用C#上位編程實現運動控制卡網絡通訊的周期上報功能
    的頭像 發表于 06-26 13:59 ?838次閱讀
    <b class='flag-5'>C#</b><b class='flag-5'>上位</b><b class='flag-5'>機</b>與運動控制卡網絡通訊的周期上報

    下位CY7C68013A發送數據,上位C#讀取數據,510字節一幀,會丟幀或者幀內錯位是怎么回事?

    下位CY7C68013A發送數據,上位C#在1個while循環內不斷地讀取數據,510字節1幀,1秒333幀、1秒667幀、1秒1333
    發表于 05-30 07:43

    上位和下位是什么關系

    上位和下位在工業自動化、儀器儀表等控制領域中是相互協作、緊密配合的關系,以下從定義、通信方式、功能分工、協同作用幾個方面詳細闡述它們的關系: 定義與角色 上位
    的頭像 發表于 05-29 18:03 ?1504次閱讀

    如何用QT開發一個USB3.0上位

    如何用QT開發一個USB3.0上位
    發表于 05-21 06:54

    玩轉C#/LABVIEW,斯撩

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

    都說上位通信難,誰能說說到底難在哪兒?

    前言 在工業自動化和物聯網(IoT)領域,上位通信一直被認為是開發過程中的一大難點。上位通信扮演著至關重要的角色。
    的頭像 發表于 03-12 16:52 ?1076次閱讀
    都說<b class='flag-5'>上位</b><b class='flag-5'>機</b>通信難,誰能說說到底難在哪兒?