Использование C# 14 в Unity

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#, так что — на свой страх и риск 😅

Нет комментариев

    Ваш комментарий