Ich möchte einen "leeren" Lambda-Ausdruck deklarieren, der nichts bewirkt. Gibt es eine Möglichkeit, so etwas zu tun, ohne die DoNothing()
Methode zu benötigen ?
public MyViewModel()
{
SomeMenuCommand = new RelayCommand(
x => DoNothing(),
x => CanSomeMenuCommandExecute());
}
private void DoNothing()
{
}
private bool CanSomeMenuCommandExecute()
{
// this depends on my mood
}
Meine Absicht dabei ist es, nur den aktivierten / deaktivierten Status meines WPF-Befehls zu steuern, aber das ist eine Seite. Vielleicht ist es für mich einfach zu früh am Morgen, aber ich stelle mir vor, dass es eine Möglichkeit geben muss, den x => DoNothing()
Lambda-Ausdruck einfach so zu deklarieren , um dasselbe zu erreichen:
SomeMenuCommand = new RelayCommand(
x => (),
x => CanSomeMenuCommandExecute());
Gibt es eine Möglichkeit, dies zu tun? Es scheint einfach unnötig, eine Do-Nothing-Methode zu benötigen.
noop
und ich würde erwarten, dass etwas Ähnliches in C # vorhanden ist.Func<Task> doNothing = async() => await Task.CompletedTask;
?Dies ist eine alte Frage, aber ich dachte, ich würde Code hinzufügen, den ich für diese Art von Situation nützlich fand. Ich habe eine
Actions
statische Klasse und eineFunctions
statische Klasse mit einigen Grundfunktionen:Ich glaube, dies trägt dazu bei, die Lesbarkeit ein wenig zu verbessern:
quelle
Das sollte funktionieren:
quelle
Angenommen, Sie benötigen nur einen Delegaten (anstelle eines Ausdrucksbaums), sollte dies funktionieren:
(Dies funktioniert bei Ausdrucksbäumen nicht, da es einen Anweisungshauptteil enthält . Weitere Informationen finden Sie in Abschnitt 4.6 der C # 3.0-Spezifikation.)
quelle
Ich verstehe nicht ganz, warum Sie eine DoNothing-Methode benötigen.
Kannst du nicht einfach tun:
quelle
new RelayCommand(..
.