Как я могу отказаться от аргумента и локальной переменной в одной области?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу отказаться от аргумента и локальной переменной в одной области?

Сообщение Anonymous »


Мой текущий код выглядит так:

// для данных методов, например: // void Foo(Action action) // асинхронная задача DoAsync() Foo(unusedInt => { вар unusedTask = DoAsync(); }); Я знаю, что могу использовать переменную сброса (_), начиная с C#7.0, вот так:

Foo(_ => { вар unusedTask = DoAsync(); }); Или

Foo(unusedInt => { _ = DoAsync(); }); Но я встречаю ошибку, если использую _ для них обоих:

Foo(_ => { _ = DoAsync(); // ошибка CS0029 }); ошибка CS0029: невозможно неявно преобразовать тип «System.Threading.Tasks.Task» в «int»

Можно ли как-нибудь отбросить обе неиспользуемые переменные?
Или может ли кто-нибудь подтвердить, что это невозможно в текущей спецификации C#?

Для справки,
Если я опущу unusedTask:

Foo(_ => { ДоАсинк(); // предупреждение CS4014 }); Предупреждение CS4014: поскольку этот вызов не ожидается, выполнение текущего метода продолжается до завершения вызова. Рассмотрите возможность применения оператора await к результату вызова.

Я бы тоже хотел избежать этого предупреждения.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»