C#程序可以跨平台吗?

我是编程的新手,我正在考虑使用C#编写一个非常简单的程序,只需编辑一个文本文件。

  • 它可以在Mac和Linux上运行吗? 什么会奏效?
  • 我想知道什么使程序跨平台?

是的,由于Mono项目,C#是跨平台的。 但请记住,这是第三方实现,而不是来自Microsoft。 因此,可能无法实现最新.NET运行时或C#语言版本的任何前沿function。

对某些人来说很难回答这样的事情,他说他只是开始编程,但我会尝试给你一个(有点简化)概述:C#是一种语言,它被编译成一个可执行程序。 只要您在每个目标平台上都有编译器,语言本身就可以在平台之间移植。 在Windows上,您有“默认”.Net实现,在Linux / Mac上,您有Mono。 要做一些有用的事情 – 比如编辑文件 – 你必须使用一些库。 每个平台都有一个标准库。 只要您只使用该function,您的程序就会跨平台。 一旦你使用某个特定于某个平台的库,显然不会是跨平台。 编辑文件是标准库的一部分,因此您可以以交叉平台的方式实现这些简单的工具。 选择一本书时,您应该寻找专注于“原始”语言的书籍,而不是Visual Studio或其他特定工具。

来自Microsoft的一个名为CoreCLR的新开源版本是跨平台的,现在可用于此目的

CoreCLR repo包含.NET Core的完整运行时实现。 它包括RyuJIT,.NET GC,本地互操作和许多其他组件。 它是跨平台的,正在进行多个OS和CPU端口。 – 来自CoreCLR回购

我不建议将c#作为多平台编码的首选。 我建议使用python,它甚至可以作为脚本运行,并且可以在所有平台上完美运行。 如果你坚持c#准备处理Justin Ethier解释的同样问题。 另一方面,Python对于所有平台都是一样的,它超级强大,甚至包装准备连接到其他语言。

关于Mono项目wiki的这篇文章总结了如何使用C#编写可移植应用程序。

现在C#是完全跨平台的,具有各种框架和运行时间。

Java是一种语言+框架。 但C#只是一种现代语言。 C#语言function非常强大,易学。 框架和语言之间没有混淆。

C#可以在以下框架中使用

  • .Net核心(多平台支持Linux,Windows和Mac),主要用于开发restful服务,Web应用程序和企业系统
  • .Net Framework(仅限Windows),与.net核心相同,但具有更多仅限Windows的function
  • Unity – 用于开发PC,Sony,Xbox设备等游戏的最常用游戏引擎之一。
  • Xamarin – 开发原生移动应用程序(Android,IOS,Mac)
  • .Net标准 – 在所有上述应用程序中使用.net标准创建库

Java – 代码一次,将相同的文件发送到所有平台

C ++,C,Rust – 代码一次,针对特定平台编译

C# – 它只是一种语言,根据需要选择你的框架。

最受欢迎的应用程序如Chrome,Firefox使用C ++,Rust,它们是针对每个平台编译的。 但他们仍然在这些平台之间共享大部分代码。 有些游戏使用C ++在IOS和Android之间共享代码。

对于新开发人员来说,从NodeJS和C#开始是件好事。 两者都很简单,可以做任何类型的应用程序。

C#是跨平台的,您可以在Windows / Linux和Mac上运行程序。 但是对于Linux,您需要使用mono运行它

如果你是一个新手,并且不坚持使用C#,那么试试Java,它离C#语法和运行都不远

 java -jar myprogram.jar 

对于Mac / Linux / Win来说是一样的。