Отбросить все параметры метода (удалить неиспользуемый параметр ‘sender’ и ‘args’)

#c# #uwp #c#-7.0

#c# #uwp #c #-7.0

Вопрос:

Ситуация

При назначении Click события кнопке я получаю готовый обработчик событий, в котором указывается object sender и RoutedEventArgs args .

Теперь для моей реализации этого обработчика событий я не использую sender и args , и поэтому я получаю сообщение о том, что я должен удалить параметры.

Я знаю об операторе discard ( _ ) в C #, однако его использование позволяет мне отбросить только один из параметров (если я _ снова использую for args , я получаю сообщение об ошибке, говорящее о том, что у меня уже есть вызванный параметр _ ).

Я искал в Интернете, но есть только примеры отбрасывания out переменных, использования отбрасывания в лямбда-выражениях и т.д., Но ничего об этом.

Например, я хочу преобразовать что-то вроде этого:

 private void Button_Click(object sender, RoutedEventArgs args)
{
    DoSomethingThatDoesNotUseSenderAndArgs();
}
 

к этому:

 private void Button_CLick(object _, RoutedEventArgs _)
{
    DoSomethingThatDoesNotUseSenderAndArgs();
}
 

Мой вопрос

Должен ли я просто проигнорировать это сообщение? Или подавить ее, поскольку, по-видимому, нет способа решить ее без использования параметров в реализации? Или на самом деле есть способ отбросить оба параметра и таким образом удалить это раздражающее сообщение?

Комментарии:

1. не могли бы вы поделиться небольшим примером кода?

2. Отбрасываемые переменные-заполнители, которые намеренно не используются в коде приложения! В этом случае вы пытаетесь использовать отбрасывания для параметров, а не переменных. Это невозможно таким образом

3. @RomanMarusyk значит, ему просто не разрешено это делать? Должен ли я тогда просто подавить сообщение?

4. Я бы его подавил

5.docs.microsoft.com/en-us/dotnet/csharp/discards If it were an actual variable, you could not discard more than one value, as the previous example did. Хотя, вероятно, вы можете сделать это как лямбда-выражение — docs.microsoft.com/en-us/dotnet/csharp/language-reference /… . Если бы это был я, я бы оставил все как есть — это обработчик событий, и люди понимают, как они работают.

Ответ №1:

Я случайно нашел ответ на свой вопрос:

Тогда как

 private void Button_CLick(object _, RoutedEventArgs _) { }
 

выдаст ошибку при втором подчеркивании,

 private void Button_CLick(object _, RoutedEventArgs __) { }
 

не будет.