Unity 5.3.5p8 C#编译器升级

Unity 5.3.5p8的C#编译器升级

留神:该版本是单独升级C#编译器的测试版!请使用文中提供的下载链接!

基于Unity
5.3.5p8的C#编译器升级!下载链接

试用该版本前请先备份项目,蒙受任何难题请马上汇报到Unity官方粤语社区(http://forum.china.unity3d.com/)。

新升高的Mono C#编译器(对应Mono 4.4)将用来编译所有的C#脚本。

主要注意事项

Unity编辑器及播放器所使用的Mono运行时还未进步。
新编译器仍针对C# 4。是旧的编译器也协助的版本。
新编译器目的框架为.Net 3.5,也是以前帮衬的框架。

那只是提高Mono/.Net迈出的首先步。

FAQ

对现有项目有什么影响?

该升级应该力所能及“正常工作”,它没有丰裕其余新功用。不会对现有项目拉动别样影响,还有些小益处。新的Mono和C#编译器与前边比较运行速度普遍更快,而且修复了连年的话的Bug。

有怎么着须要注意的?

力排众议上有可能在运作时发出出人意料的题材。但我们和好测试的进程中从未察觉。

大部情状下都会在编译时发现难点。近来截止大家相遇的情况有:
稍微无效的C#代码是旧的编译器允许但新的编译器会报错的
涉嫌到编译器特定属性(安装目录、名称等)的代码或插件会出错

其余,假使您时常应用MonoDevelop或VSTU(Visual Studio Tools for
Unity)调试C#代码,那欢迎向大家反馈你赶上的其他难点。编译器输出结果应该是同样的,但调试器可能对此一些生成的代码形式会很灵巧。

有如何紧要变动吧?

新编译器有一处已知的显要变更,就是闭包获取foreach变量的方法,那是由C#言语团队做出的改动。也就是说,如下代码将出口“b
a r”而非近年来的“r r r”:

var actions = new Action[3];
var j = 0;
foreach (var c in "bar")
   actions[j++] = () => Console.WriteLine(c);

foreach (var a in actions)       
    a();

应用较新的VS或Mono均会获得那样的结果,这也是眼下WSA平台所突显的作为,具体细节请看:

https://msdn.microsoft.com/en-us/library/hh678682(v=vs.110).aspx

是还是不是修复了“foreach”内存分配的难题?

一点情形下是的,难点讲述请看:

http://stackoverflow.com/questions/18552669/memory-allocation-when-using-foreach-loops-in-c-sharp

对Array、List、Dictionary或HashSet做“foreach”遍历是不会分配内存的。

干什么不面向C# 5或C# 6?

第一步大家愿意先推出新的编译器。以后再启用新的C#特性。

支持C#言语新特点面临的多少个难题:
C语言,此时此刻的生态系统无法完全把控新的C#(脚本更新器、调试器、特定的MonoDevelop/VisualStudio版本)
当下仍以旧的.Net
3.5为目的框架。在旧框架上支撑新的C#一些会造成些迷惑。从头开始编写所有代码也许可行,但对此已有代码来说或许须要C#语言和框架都是前卫才可以。

资料文献

原文出处:http://forum.china.unity3d.com/thread-19893-1-1.html