Упрощенное использование операторов в Unity - PullRequest
3 голосов
/ 17 января 2020

Я использую Unity 2019.2.18f и VS 2019 16.4.3 (CS C версия 3.4.1-beta4-19610-02). Я довольно новичок в Unity и C#.

Я написал такой код:

using (UdpClient client = new UdpClient(...)) {
    ...
}

VS 2019 предложил, что утверждение можно упростить до:

using UdpClient client = new UdpClient(...);
...

Полагаю, это C# 8,0 вещь . Тем не менее, когда я делаю это, обратно в консоль Unity жалуется, что в выражении using отсутствует пара:

Assets\Scripts\NavioRemote.cs(106,19): error CS1003: Syntax error, '(' expected
Assets\Scripts\NavioRemote.cs(106,101): error CS1026: ) expected

VS, однако не сообщает об ошибках.

У меня есть два вопроса:

  1. Почему Unity не может скомпилировать это, а VS считает, что это правильно?
  2. Есть ли способ заставить Unity принять этот синтаксис?

1 Ответ

3 голосов
/ 17 января 2020

Почему Unity не может скомпилировать это, а VS считает, что это правильно?

В каждой среде вы компилируете, используя разные языковые версии. Unity поддерживает только до C# 7,3, а VS 2019 поддерживает все. Для языковых функций, которые использует ваш код, требуется C# 8.0.

В VS2019, go для свойств проекта, вкладка Build, где вы увидите кнопку «Advanced». Там есть выпадающий список для выбора языковой версии. Я полагаю, что по умолчанию это «Последний», и у вас, вероятно, есть C# 8 в списке. Если вы измените это значение на 7.3 или ниже, вы увидите такое же / похожее поведение.

Есть ли способ заставить Unity принять этот синтаксис?

Нет. Unity поддерживает только до языковой версии 7.3 прямо сейчас. Но если вы подождете несколько месяцев или лет, или путешествие во времени, то Unity наверстает упущенное.

...