我想学习C#因为......这些天似乎是一种非常适合销售的语言.不仅仅是C,而不是我所在地区的PHP/MySQL,但我宁愿成为软件开发人员而不是Web开发人员.无论如何,我正在运行Linux,我没有希望在Windows平台上工作,直到我买了一台新电脑.那么,在linux下学习C#有什么缺点吗?如果是这样的话,在网上做这样的事情有什么好的教训吗?有没有在线学习C#的好教程?
所以我得到的主要缺点是尽管完整的C#语言规范是以单声道实现的,但完整的.Net框架却没有.但是,直到我可以获得一个新的系统并运行Windows,我想缺乏完整的框架将不得不做.
在Linux上使用Mono,有没有办法创建一个独立的可执行文件,它将在没有安装单声道的系统上运行?
我目前正在参与一些有趣的编程语言研究,到目前为止,该研究主要围绕使用一些非常强大的基于程序员生产力的功能扩展即将推出的Java 7.0编译器.该工作应同样适用于相关的编程语言,如C#.
我目前正在寻找原型化C#端口功能的选项.我更喜欢开源选项,以便可以与最广泛的受众分享这项工作的成果.因此,Mono C#编译器似乎是最明显的起点.我是一位经验丰富的C#开发人员,所以编写代码不是问题.我主要关心的是以可维护和支持的方式扩展编译器.在关于这个主题的单声道常见问题解答(链接)中,声称"Mono已被用作尝试C#语言的新思想的基础(有三个或四个编译器派生自Mono的C#编译器)".不幸的是,没有比此更多的指示,到目前为止,谷歌的搜索还没有任何改变.
我想知道是否有任何人有这方面的任何信息.是mcs/ gmcs/ dmcs有一个标准的可扩展性模型?具体来说,我将在程序的抽象语法树上执行一些有趣的转换.是否有一种标准机制,用于在抽象语法树生成和类型检查器之间插入功能到编译器链中,然后生成代码?
到目前为止,我已经为代码编写了一些特别的扩展(主要是在代码生成器中),但这似乎不是一个可维护的解决方案,特别是考虑到我打算让我的扩展更新为Git主干单声道尽可能多.此外,能够更新我的扩展,而不必每次进行更改时都重新编译整个编译器,这将是很好的.我希望能够将我的所有AST操作包装到一个可由mcs/ gmcs/ 动态加载的.NET程序集中,dmcs而不必直接破解核心编译器代码.
任何有关扩展Mono C#编译器的想法或指示都将非常感激!
更新(2010年10月23日)
在回答我的问题时,我决定开始研究Mono的一个分支,以便为编译器创建一个简单的可扩展性模型.这是在它的早期阶段,但它在GitHub:
http://github.com/rcook/mono-extensibility
主要提交是:http://github.com/rcook/mono-extensibility/commit/a0456c852e48f6822e6bdad7b4d12a357ade0d01
如果有人有兴趣合作这个项目,请告诉我!
所有,我正在考虑将我的应用程序从VB.net移植到基于C#的MONO项目,因此它可以在Windows和Mac上运行.但是,我需要一个Mac友好的替代WPF.它必须具有非常相似的功能.QML(通过QT)不是一个可行的选择,因为它为我们花费了太多的钱.
我有一些简单的C#应用程序(单一形式),最初用VS在win上编写.现在我用mono develop打开它,我得到了警告和错误:
Warning: Assembly 'System.Deployment' not found. Make sure that the assembly exists in disk. If the reference is required to build the project you may get compilation errors. (Tring.Fiscal.Primjer)
Error: The compiler appears to have crashed. Check the build output pad for details. (Tring.Fiscal.Primjer)
Run Code Online (Sandbox Code Playgroud)
知道怎么在linux下编译这个应用程序?
我收到此错误 JNI ERROR(应用程序错误):访问陈旧的全局引用当我在Android OS v4中运行我的应用程序时,但是当我在Android v2.3中运行相同的应用程序时,我没有收到此错误.
这个错误发生在我调用AsyncTask类的地方,我将字符串数组作为参数传递
任何人都可以帮助我?
如果我知道资源的名称,我怎么能返回资源的id?
像这样的东西:
String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
Run Code Online (Sandbox Code Playgroud) 使用单声道的.NET 2,我使用的是一个JSON返回嵌套字符串,对象字典和列表的基本库.
我正在编写一个mapper来将它映射到我已经拥有的jsonData类,我需要能够确定a的基础类型object是Dictionary还是List.下面是我用来执行此测试的方法,但是想知道这是否更干净?
private static bool IsDictionary(object o) {
try {
Dictionary<string, object> dict = (Dictionary<string, object>)o;
return true;
} catch {
return false;
}
}
private static bool IsList(object o) {
try {
List<object> list = (List<object>)o;
return true;
} catch {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用的库是,litJson但JsonMapper该类基本上不适用于iOS,因此我正在编写自己的映射器.
这是一个非常普遍的基于学习的问题,而不是技术问题.
我正在Unity中制作游戏.游戏涉及许多相当复杂,高对象数的进程,因此,我产生了大量的垃圾.每个制作使用托管代码的游戏的人都知道,垃圾收集峰值是一个巨大的口号.我也试图瞄准移动设备,所以这种痛苦被放大了.
我的目标很简单:跟踪生成最多垃圾和池的过程并重用所涉及的对象,以减少垃圾收集器的负载.我已经处理了所有明显的类,但我的GC问题仍然存在.如果有人能在这里提供更多的智慧,请带上它.
我在研究中无法追踪的是测量GC负载和跟踪代码本身问题点的好方法.我可以从Unity和诊断类中获取有关内存池大小的指标(虽然我不知道这些数字的真正意义)并且我可以显示自开始以来发生的GC集合的总数,但是我调试这个问题的知识在那里结束了.
我知道必须有更好的方法来解决这个问题.任何人都可以指出我可以帮助我在这里的正确的工具或框架类(或库?)?我已经看到一些调试器程序(sgen?),它是Mono的一部分,但我找不到下载或更不用说如何将它连接到Unity游戏的指南.
任何帮助将不胜感激.谢谢.