我想声明一个“空的”lambda表达式,它什么也不做。有没有一种方法可以在不需要DoNothing()
方法的情况下做这样的事情?
public MyViewModel()
{
SomeMenuCommand = new RelayCommand(
x => DoNothing(),
x => CanSomeMenuCommandExecute());
}
private void DoNothing()
{
}
private bool CanSomeMenuCommandExecute()
{
// this depends on my mood
}
我这样做的目的只是为了控制我的WPF命令的启用/禁用状态,但这是另外一件事。也许现在对我来说太早了,但我想一定有一种方法可以像这样声明x => DoNothing()
的lambda表达式来完成同样的事情:
SomeMenuCommand = new RelayCommand(
x => (),
x => CanSomeMenuCommandExecute());
有什么方法可以做到这一点吗?似乎不需要什么都不做的方法。
发布于 2009-11-16 23:48:52
Action doNothing = () => { };
发布于 2012-12-28 23:17:31
我想我应该添加一些我发现对这种情况有用的代码。我有一个Actions
静态类和一个Functions
静态类,其中包含一些基本函数:
public static class Actions
{
public static void Empty() { }
public static void Empty<T>(T value) { }
public static void Empty<T1, T2>(T1 value1, T2 value2) { }
/* Put as many overloads as you want */
}
public static class Functions
{
public static T Identity<T>(T value) { return value; }
public static T0 Default<T0>() { return default(T0); }
public static T0 Default<T1, T0>(T1 value1) { return default(T0); }
/* Put as many overloads as you want */
/* Some other potential methods */
public static bool IsNull<T>(T entity) where T : class { return entity == null; }
public static bool IsNonNull<T>(T entity) where T : class { return entity != null; }
/* Put as many overloads for True and False as you want */
public static bool True<T>(T entity) { return true; }
public static bool False<T>(T entity) { return false; }
}
我相信这只会稍微提高可读性:
SomeMenuCommand = new RelayCommand(
Actions.Empty,
x => CanSomeMenuCommandExecute());
// Another example:
var lOrderedStrings = GetCollectionOfStrings().OrderBy(Functions.Identity);
发布于 2009-11-16 23:48:12
这应该是可行的:
SomeMenuCommand = new RelayCommand(
x => {},
x => CanSomeMenuCommandExecute());
https://stackoverflow.com/questions/1743013
复制相似问题