It’s Possible To Use C# 14 In Unity! — так называется свежий видос на одном ютуб канале. Несмотря на то что Unity официально не поддерживает C# 14 «из коробки», есть способы включить новые фичи 14 версии. Ссылки для патчинга прилагаются в описании. Так-так-так…
В самом видео говорится, что многое из списка скорее всего не будет работать, но это уже совсем другая история 😶🌫️
В новых версиях в основном «сахар», но тем не менее, это может делать код более чистым, добавляет новые паттерны и кое-где производительность.
Extension Members — можно расширять типы не только методами, но и свойствами, индексаторами и операторами.
public static class EnumerableExtensions {
extension<T>(IEnumerable<T> source) {
public bool IsEmpty => !source.Any();
public T this[int index] => source.Skip(index).First();
}
}
Null-conditional присваивание (?.=) — позволяет записывать значения только если объект не null, без if-проверок.
player?.Health = 100;
player?.Score += 10;
Использование nameof с необобщёнными типами.
Debug.Log(nameof(List<>)); // "List"
Использование Span и ReadOnlySpan.
Span<byte> data = someArray;
Лямбды с модификаторами — можно использовать модификаторы вроде ref, out прямо в лямбдах без указания типа.
TryParse<int> parse = (text, out result) => int.TryParse(text, out result);
Ну и field в свойствах, наверно самое полезное, как по мне — можно обращаться к скрытому полю свойства прямо внутри тела аксессоров
// раньше
public int Health { get; set; }
private int _health;
public int Health {
get => _health;
set => _health = Mathf.Clamp(value, 0, 100);
}
//по новому
public int Health {
get;
set => field = Mathf.Clamp(value, 0, 100);
}
Но помните, Unity официально не поддерживает самые свежие версии C#, так что — на свой страх и риск 😅
Нет комментариев