• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Unity 5.3.5p8 C#编译器升级

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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#(脚本更新器、调试器、特定的MonoDevelop/VisualStudio版本)
目前仍以旧的.Net 3.5为目标框架。在旧框架上支持新的C#或多或少会导致些迷惑。从头开始编写所有代码也许可行,但对于已有代码来说可能需要C#语言和框架都是最新才可以。

资料文献

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
《BeginningC#Objects》一本面向对象入门的好书发布时间:2022-07-10
下一篇:
c#应用程序部署发布发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap