Re[7]: bool Try(out result)
От: alexzz  
Дата: 01.07.15 14:14
Оценка: 69 (3)
Здравствуйте, Qbit86, Вы писали:

Q>В какой-то степени оно всё CIL-совместимо и теоретически можно писать нескриптовый код в 2015 Студии на новом C# 6 под старый .NET 3.5, но там свои ограничения и подводные грабли с AOT на iOS.


Я приделал к Unity два компилятора C# 6: майкрософтовский и из поставки Mono 4.0.0.

http://forum.unity3d.com/threads/c-6-0.314297/#post-2108999
http://www.gamedev.ru/flame/forum/?id=151586&page=32#m472

Также приспособил библиотеку AsyncBridge.Net35.dll, теперь могу использовать async/await прямо в скриптах вместо сопрограмм.

Не знаю, можно ли этим пользоваться в продакшене, пока играюсь, смотрю, какие вылезут косяки. В редакторе, в билдах под Windows и на Андроиде у меня заработали все фичи C# 6. Т.е. вообще всё, кроме dynamic, естественно. Под WebGL IL2CPP не смог скомпилировать фильтры исключений и библиотека AsyncBridge ему не понравилась, т.е. недоступны async/await и атрибуты caller information.

iOS у меня нет, поэтому проверить AOT не могу, хотя было бы интересно. Вот тут чувак пишет, что iOS поддерживается.


Между компиляторами Roslyn и Mono нашёл только одно отличие. Моновский не понимает, что у bar должен быть тип Nullable<int>.
var foo = new[] { 1, 2, 3 };
var bar = foo?[0];

Компилятор из нового Mono 4.0.1 пока не проверял.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.