請注意,我專精於Unity3D,但我仍然希望使用C#來創建Linux應用程式。
是的,您可以在Ubuntu上开发软件,该软件本身将在Ubuntu上运行,使用C#。 Mono和.NET Core都支持像Ubuntu这样的GNU/Linux系统。(您也可以在其他发行版上使用它们,例如Debian,Raspbian,Fedora,CentOS,Arch,Gentoo等。)Unity3D游戏引擎也支持Ubuntu,就像您可能知道的那样。Unity3D 嵌入Mono。
在Ubuntu上有许多软件包可以通过官方社区支持的软件源使用Ubuntu的软件包管理器进行安装,这些软件包是用C#编写并使用Mono。其中包括音乐播放器Banshee,笔记应用Tomboy,光栅图形编辑器Pinta和密码管理器KeePass(自版本2起)。很有可能你会偶然发现http://www.mono-project.com/
正如关于Mono页面所说:
Mono是基于.NET Framework的开源开发平台,允许开发人员以提高开发效率的方式构建跨平台应用程序。Mono的.NET实现基于ECMA对C#和公共语言基础设施的标准。
支持的平台包括Linux。
Linux提供了C编程语言的本地API。本地Linux程序使用这些API来访问文件、I/O设备、套接字(网络)、进程间通信、线程等等。要创建本地Linux应用程序,您需要在C中编写您的应用程序,然后使用(很可能)GCC进行编译,以得到一个可执行文件。您甚至可以进一步使用GUI库在您的程序中添加GUI(GTK和Qt是两个流行的库),或者使用打包系统打包您的应用程序(如.deb和.rpm文件)。
C#、F#和VB带有自己的编译器(通常生成IL代码而不是机器代码),而不是直接使用Windows或Linux本地API(都是用C编写),它们拥有自己的封装器。这意味着需要在编译代码和操作系统之间再加入另一个额外的层。这个额外的层必须读取IL代码并将其翻译成本地的Windows、Linux或macOS API。这个额外的层可以是.NET Framework、Mono或.NET Core(目前只有.NET)。
现在来回答“C#是否适用于Linux系统编程”的问题,大多数情况下是可以的。
.NET拥有处理文件、网络、线程和一些I/O设备的库。举个例子,假设你需要在应用程序中访问蓝牙。.NET没有任何关于蓝牙的API,所以在这种情况下你有两个选择:C# 在 Linux 上的缺点