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
我猜这个我不用说了。


分享到:


相關文章: