C#跨平臺嗎?

ee-超Lz


C#當然已經是一門徹底的跨平臺編程語言,最厲害的是C#是目前除了C++之外唯一一門可以開發移動端和PC端的編程語言,C#除了Windows平臺的開發,還搞定了iOS/Android的開發,他還不用像C++一樣每個平臺都要單獨開發一次。

從Mono說起、C#似乎不是真正的跨平臺

C#並不是一開始就跨平臺的,不像Java/Python/JavaScript/PHP這些編程語言一開始就是跨平臺,C#並不是這樣,C#設計之初並不是跨平臺的。

C#之父也是Delphi之父、安德斯海爾斯伯格從設計C#開始,就把它作為了Windows平臺專屬的編程工具,因此微軟官方並沒有像Java一樣跨平臺。

Xamarin公司主持了一個叫做Mono的開源項目,這個項目的目的就是創建一個開源的

.NET

工具,包括C#編譯器以及通用語言架構,與微軟官方的

.NET

Framework不同的是,Mono項目不僅僅可以在Windows平臺上運行,還可以在Linux、Unix、macOS、FreeBSD、Solaris等,甚至在Playstation 3,Wii以及XBox 360等遊戲平臺Mono也都能夠運行。

後來微軟收購了Xamarin這家公司,微軟正式推進了C#和

.NET

開源,並且微軟官方推出了macOS版本的visual studio,其實就是基於xamarin做的,這可以說是微軟正式官方支持了整個微軟最核心開發體系的跨平臺和開源。

C#能夠用在下面這些框架當中

.NET

Core(全平臺、完全跨平臺支持Linux、Windows、macOS),主要用在服務器端開發,Web應用開發,以及企業系統開發,這方面功能是C++/Java/PHP/Python等編程語言最擅長的事情;

Windows桌面程序開發,主要技術是WPF框架,這個層面的技術是C++最擅長的;

Unity遊戲引擎的主要腳本語言,可用來開發PC、Sony、Xbox等遊戲平臺上的各種遊戲,Unity是最為成熟的遊戲引擎之一,目前除了Unity最強的是Unreal虛幻引擎,虛幻引擎的主要編程語言則是C++,相對來說C#更低的學習門檻,也讓Unity迅速發展成為最火的遊戲引擎之一;

開發原生移動應用,除了曾經的Windows phone平臺,通過Xamarin的技術,微軟實現了iOS/Android原生應用開發,並且與此同時還支持了macOS應用開發;

.NET

標準在上述所有應用程序中使用.net標準創建庫。

最後總結一下跨平臺編程語言的特點:Java是一次編寫到處運行,C++是一次編寫針對特定的平臺進行編譯,C#則本質上僅僅是一門編程語言,想要實現跨平臺你需要選擇不同的技術棧、不同的框架。


本文由EmacserVimer原創出品,未經許可,任何渠道、平臺請勿轉載,違者必究。

EmacserVimer


C#是.Net平臺上的主要開發語言,除此之外還有VB.Net和F#等。此處說的C#跨平臺暫且理解為.Net跨平臺。

1,微軟設計.Net之初,只支持Windows平臺,跨多個版本的Windows系統平臺,但是不能跨Linux等。

2,.Net剛出來就公開了語言標準,因此有個團隊基於該標準設計了Mono,除了Windows還支持Linux,並且一直維護更新,此時算得上是支持跨平臺了。

3,2004年,牛逼遊戲公司搞了個遊戲引擎Unity,現在只支持C#,非常熱門

4,2011年,另一個團隊基於Mono開發了Xamarin,支持蘋果、Android、WP三個平臺的移動開發,這個時候的.Net跨平臺更有價值了。

5,2016年,微軟正式推出.Net Core,天生跨平臺,支持Windows、Linux、iOS等。

6,再後來,微軟收購了Mono、Xamarin,免費開放。

至此,.Net Core跨平臺一統天下!



智能大石頭


.NET

和C#剛出來的時候就被設計為可以跨平臺的,不過由於微軟的戰略考慮,所以當時只是跨Windows平臺,只能算半個跨平臺。


之後有了Mono,也就是開源的

.NET

實現,這時候C#就可以看成完全跨平臺的了。不過Mono畢竟是社區實現,沒有大公司的資金支持,雖然算是穩步發展,但是一直不溫不火。


這種情況知道最近幾年改善了。因為微軟終於出手了,這就是大名鼎鼎的

.NET

Core,官方的跨平臺

.NET

實現。作為

.NET

的親兒子語言,C#自然理所應當的跨平臺了。

.NET

Core的代碼完全是重新編寫的,並且是模塊化的。作為對比,Java的模塊化直到Java 9才實現。

之後微軟的工作重心就放到了.NET CORE上,ASP.NET

以及EF等框架也開發了新版來適應

.NET

CORE。


現在

.NET

CORE的版本是2.2,最近的主要新特性是用Span重寫了很多底層,大幅提高了運行速度。而今年底將要到來的3.0則會帶來CORE上的WPF等GUI庫。可以期待。


PS.現在主流Linux已經將

.NET

CORE納入到官方倉庫中,用一條命令即可安裝。之後就可以享受到C#語言帶來的便利。

樂百川


石頭哥已經給你回答了。😂😂😂

為了攢點粉絲,我也答一下。

C#是.NET中的一個語言,F#、VB等也是。一般我們不說C#,而是說.NET。

目前.NET有.net framework、.net core、xamarin、mono等框架。未來將以.NET 5開始,統一框架。

.net可以跨平臺、跨CPU架構。

支持Windows、linux、mac系統,基於linux開發的debain、ubuntu、centos等系統都支持。

除了英特爾CPU,amd的CPU、arm架構的cpu都支持。

除了我們平常電腦、服務器用的Windows系統、linux系統,還支持樹莓派等各種linux嵌入式開發板。

c語言是非託管語言,要對各種平臺分別生成。而.net可以只生成一次,即可把軟件放到各種平臺下運行。一次生成,各個平臺均可運行,不限cpu、不限系統。

對於docker、k8s等技術。.net能十分優秀地契合,通過容器、集群技術,建立大型系統,開發分佈式應用。

國外有十分豐富的大型應用經驗,國內對.NET的敏感度不高,主要以java為首的編程進行開發。要參考.net的情況,應當到谷g查找資料。國內對.net的”熱情”並不高。

.net支持windows、mac、linux等系統,支持電腦、手機(安卓和ios)、服務器、開發板/物聯網設備。

軟件只需生成一次,即可在各個平臺佈署。

.net core的性能已經跟C++十分接近了。

.net 不僅能跨平臺,而且跨得很優秀。


痴者工良


C#包括其他的

.NET系語言,從技術實現上都是跨平臺的,因為它們在編譯之後都是符合.NET公共運行時標準的字節碼,通過.NET虛擬機運行時翻譯成最終的二進制運行。

微軟之前將C#等侷限在微軟操作系統上,只是一種商業競爭的考慮,希望廣大的開發者仍然圍繞在微軟的操作系統生態上開發。


周林ZhouLin


  • Mono
一個第三方的.net framework實現 (現被官方收編)

幾乎實現了

.net

framework的所有功能,包括winfrm,wcf,aspnet webfrm 等等

大名鼎鼎的unity3d就是使用mono實現了使用C#進行腳本編寫

  • Xamarin

基於mono開發的,移動端跨平臺框架,支持 Android,iOS,WP(W10M)

  • .NET

    Core
我猜這個我不用說了。


分享到:


相關文章: