Saya ingin menyatakan ekspresi lambda "kosong" yang tidak berarti apa-apa. Adakah cara untuk melakukan sesuatu seperti ini tanpa memerlukan DoNothing()
metode?
public MyViewModel()
{
SomeMenuCommand = new RelayCommand(
x => DoNothing(),
x => CanSomeMenuCommandExecute());
}
private void DoNothing()
{
}
private bool CanSomeMenuCommandExecute()
{
// this depends on my mood
}
Maksud saya melakukan ini hanya mengontrol status diaktifkan / dinonaktifkan dari perintah WPF saya, tetapi itu di samping. Mungkin masih terlalu pagi bagi saya, tetapi saya membayangkan pasti ada cara untuk menyatakan x => DoNothing()
ekspresi lambda dengan cara seperti ini untuk mencapai hal yang sama:
SomeMenuCommand = new RelayCommand(
x => (),
x => CanSomeMenuCommandExecute());
Apakah ada cara untuk melakukan ini? Sepertinya tidak perlu metode tidak melakukan apa-apa.
noop
dan saya mengharapkan sesuatu yang mirip akan hadir di C #.Func<Task> doNothing = async() => await Task.CompletedTask;
?Ini adalah pertanyaan lama, tetapi saya pikir saya akan menambahkan beberapa kode yang menurut saya berguna untuk situasi seperti ini. Saya memiliki
Actions
kelas statis danFunctions
kelas statis dengan beberapa fungsi dasar di dalamnya:Saya yakin ini sedikit membantu meningkatkan keterbacaan:
sumber
Ini harus bekerja:
sumber
Dengan asumsi Anda hanya membutuhkan delegasi (bukan pohon ekspresi) maka ini harus berfungsi:
(Itu tidak akan bekerja dengan pohon ekspresi karena memiliki badan pernyataan . Lihat bagian 4.6 dari spesifikasi C # 3.0 untuk lebih jelasnya.)
sumber
Saya tidak sepenuhnya mengerti mengapa Anda membutuhkan metode DoNothing.
Tidak bisakah Anda melakukan:
sumber
new RelayCommand(..
.