激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C# 是 TypeScript 的最佳替補?

C# 是 TypeScript 的最佳替補?

2021-12-29 00:42晃來晃呿 C#

TypeScript非常優秀。它完美地結合了強類型和快速開發,因此非常好用,我在許多情況下都會默認選擇這個庫。但是,世上沒有完美的語言,有些情況下TypeScript并不是最合適的工具。

C# 是 TypeScript 的最佳替補?

TypeScript非常優秀。它完美地結合了強類型和快速開發,因此非常好用,我在許多情況下都會默認選擇這個庫。但是,世上沒有完美的語言,有些情況下TypeScript并不是最合適的工具:

  • 性能至關重要(例如實時通信、視頻游戲)
  • 需要與原生代碼(如C/C++或Rust)交互
  • 需要更嚴格的類型系統(例如金融系統)

對于這些情況,TypeScript開發人員最好還是選用其他語言。C#、Go和Java都是非常好的選擇。它們的速度遠超 TypeScript,每種語言都有自己的長處。C#能與TypeScript配合得很好,我來解釋一下為什么。

TypeScript 就是添加了 C# 的 JavaScript

C#能與TypeScript配合得很好,因為它們看上去就像是同一種語言。兩者都是由Anders Hejlsberg設計的,而且從許多方面來看,TypeScript就是添加了C#的JavaScript。它們的特性和語法都很相似,因此在同一個項目中結合使用二者非常容易。更重要的是,C#的語言與TypeScript很相似,因此開發人員閱讀和編寫代碼也非常輕松。

相反,Go是一種完全不同的語言:沒有類,沒有繼承,沒有異常,沒有包級別的封裝(只有類級別的封裝),而且語法也完全不同。當然這并不一定是壞事,但開發人員的確需要重新思考并用不同的方式設計代碼,因此,同時使用Go和TypeScript是比較困難的。不過,Java與C#很相似,但依然缺乏許多C#和TypeScript都有的功能。

C#和TypeScript的相似之處

也許你已經知道,C#和TypeScript有很多相似之處,如基于C的語法、類、接口、泛型等。下面,我來詳細列舉一下二者的相似之處:

  • async/await
  • lambda表達式和函數式數組方法
  • 用于處理空的操作符(?,!,??)
  • 解構
  • 命令行界面(CLI)

async/await

首先,C#和JavaScript都使用async/await來處理異步代碼。在JavaScript中,異步操作用Promise表示,而應用程序可以await一個異步操作結束。C#中的Promise其實是Task,概念上與Promise完全相同,也有相應的方法。下面的例子演示了兩種語言中async/await的用法:

  1. async function fetchAndWriteToFile(url: string, filePath:string): Promise {
  2. // fetch() returns aPromise
  3. const response = awaitfetch(url);
  4. const text = awaitresponse.text();
  5. // By the way, we'reusing Deno (https://deno.land)
  6. awaitDeno.writeTextFile(filePath, text);
  7. return text;
  8.  
  9. using System.IO;
  10. using System.Net.Http;
  11. using System.Threading.Tasks;
  12.  
  13. async Task FetchAndWriteToFile(string url, stringfilePath) {
  14. // HttpClient.GetAsync()returns a Task
  15. var response = await newHttpClient().GetAsync(url);
  16. var text = awaitresponse.Content.ReadAsStringAsync();
  17. awaitFile.WriteAllTextAsync(filePath, text);
  18. return text;
  19. }

下面是JavaScript的Promise API與等價的C# Task API:

C# 是 TypeScript 的最佳替補?

Lambda表達式和函數式數組方法

C#和JavaScript都用熟悉的=>語法(即箭頭函數)來表示lambda表達式。下面是TypeScript和C#的比較:

  1. const months = ['January', 'February', 'March', 'April'];
  2. const shortMonthNames = months.filter(month => month.length< 6);
  3. const monthAbbreviations = months.map(month =>month.substr(0, 3));
  4. const monthStartingWithF = months.find(month => {
  5. returnmonth.startsWith('F');
  6. });

TypeScript中使用lambda表達式

  1. using System.Collections.Generic;
  2. using System.Linq;
  3.  
  4.  
  5. var months = new List {"January","February", "March", "April"};
  6. var shortMonthNames = months.Where(month => month.Length <6);
  7. var monthAbbreviations = months.Select(month =>month.Substring(0, 3));
  8. var monthStartingWithF = months.Find(month => {
  9. returnmonth.StartsWith("F");
  10. });

C#中使用lambda表達式

上述示例演示了C#的System.Linq命名空間中的一些方法,相當于JavaScript的函數式數組方法。下面是JavaScript的數組方法與等價的C# Linq方法:

C# 是 TypeScript 的最佳替補?

性能:C#很快。C#的ASP.NET Web框架一直在Techempower的評測中名列前茅,而C#的.NET CoreCLR運行時的性能每個主要版本都在提高。C#擁有優良性能的原因之一是,通過使用結構而不是類,應用程序可以最小化甚至完全消除垃圾回收。因此,C#在視頻游戲編程中非常流行。

游戲和混合現實:C#是游戲開發最流行的語言之一,像Unity、Godot甚至Unreal游戲引擎都使用了C#。C#在混合現實中也很流行,因為VR和AR應用程序都是用Unity編寫的。

由于C#擁有第一方庫、工具和文檔,因此一些任務非常容易實現,比如,在C#中創建gRPC客戶端要比TypeScript方便得多。相反,在Node.js中使用TypeScript時,就必須找出正確的模塊和工具的組合,才能正確地生成JavaScript gRPC客戶端,以及相應的TypeScript類型。

高級功能:C#有許多其他語言沒有的功能,如運算符重載、析構函數等。

如前所述,世上沒有完美的語言。在設計語言時總要有所權衡,所以一些語言的速度更快,但使用難度會增加(例如Rust的借出檢查)。另一方面,一些語言非常易用,但通常性能的優化難度就會增加(例如JavaScript的動態語言特性)。正因如此,我相信掌握一組相似的語言會非常有用:這些語言分別有各自的長處,但都很相似,而且能互相配合。例如,下面是我選擇的一組語言:

TypeScript

  • 最高層的語言,開發速度最快
  • 性能并非最佳,但適用于大多數應用
  • 不太適合與原生代碼結合

C#

  • 仍然是高級語言,支持垃圾回收,所以很容易使用,盡管并不如TypeScript那么容易。
  • 從速度和內存占用量來看,其性能都優于 TypeScript
  • 最重要的是,能夠與底層很好地結合

C++

  • 開發難度較大(例如需要手動內存管理),因此開發速度會慢很多
  • 但運行時的性能最佳!而且隨處可用,能與許多已有的軟件相結合
  • 很像C#,而且標準庫很好,但也有許多陷阱(大多數與內存管理有關)。我更希望使用Rust,因為它的內存安全性更好,但我的許多工作都要與已有的C++代碼結合,因此使用C++會更容易。

原文地址:https://www.toutiao.com/a7046275616781615655/

延伸 · 閱讀

精彩推薦
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
主站蜘蛛池模板: 四季久久免费一区二区三区四区 | 国产免费久久久久 | 男女羞羞视频 | 亚洲精品v天堂中文字幕 | 欧美黄一级| 精品亚洲网站 | 操操操操操 | 在线 日本 制服 中文 欧美 | 日本aaaa片毛片免费观看视频 | 国内精品视频饥渴少妇在线播放 | 国产69精品久久久久孕妇黑 | 久久久久九九九女人毛片 | www.com香蕉| 国产中文av在线 | www.精品久久 | 日本黄色大片免费 | 亚洲精品午夜电影 | 久久久免费观看完整版 | 日本欧美视频 | 久久精品一级片 | 91看片在线观看视频 | 亚洲成人入口 | 黄视频免费观看 | 亚洲第五色综合网 | 亚洲va久久久噜噜噜久久男同 | hdhdhd69ⅹxxx黑人 | 中文区中文字幕免费看 | 欧美成年视频 | 国产成人av一区 | 性欧美视频在线观看 | 免费观看三级毛片 | 欧美视频在线观看一区 | 精品人成 | 伊人yinren22综合网色 | 精品视频一区二区三区四区 | 久久99精品久久久久久国产越南 | 久久91精品国产91久久yfo | 97超级碰碰人国产在线观看 | 黄色片视频在线观看 | 久久99精品久久久久久小说 | 2021狠狠操 |