对于.NET的C#和对于mono的C#有什么真正的区别吗?

对于.NET的C#和对于mono的C#有什么真正的区别吗?,c#,.net,mono,C#,.net,Mono,我想自学C#,但我能找到的所有书籍都是基于官方的.NET。我是一名Linux用户,因此当然希望我的应用程序主要在Mono上运行(尽管xplatform到.NET也可以)。一本面向.NET上C#的书对Mono上的C#同样有用吗?除了小错误和不完全相同的Mono之外,它非常接近C#规范,任何关于C#语言的书都可以毫无问题地应用 主要区别在于类库,其中有些部分并不总是在Mono中实现,而有些部分是不应该使用的 例如,WPF(一个用户界面库)在Mono中不存在,WinForms(旧的用户界面库)中不存在

我想自学C#,但我能找到的所有书籍都是基于官方的.NET。我是一名Linux用户,因此当然希望我的应用程序主要在Mono上运行(尽管xplatform到.NET也可以)。一本面向.NET上C#的书对Mono上的C#同样有用吗?

除了小错误和不完全相同的Mono之外,它非常接近C#规范,任何关于C#语言的书都可以毫无问题地应用

主要区别在于类库,其中有些部分并不总是在Mono中实现,而有些部分是不应该使用的

例如,WPF(一个用户界面库)在Mono中不存在,WinForms(旧的用户界面库)中不存在,但在linux下,您应该使用GTK

所以你应该看看你的书到底讲了些什么,然后在函数中进行选择。一些非常糟糕的书是从如何使用VisualStudio开始的,并键入您的第一个WPF hello world,它们显然是您作为一名C#linux程序员不想要的

虽然mono项目包含很好的文档,但要确定某个类是否受支持,一个很好的方法是浏览其上的源代码,如果名称空间不存在或填充了抛出NotSupportedException的类,那么您知道您不能使用它

如果我推荐一本书的话,它的目标是那些已经开始编程并希望通过mono学习C的人。

绝大多数C/Net书籍都适用于其他平台上的mono/C。它们都实现了相同的规范。Mono Develop在其他平台上也是一个不错的选择

当然,库中任何特定于平台的内容都会有所不同。例如:

  • Microsoft。*命名空间
  • P/Invoke到Win32 API
  • COM/COM互操作
以下是关于该主题的相关帖子:


我鼓励您阅读Mono的常见问题解答: