#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 __) { }
не будет.