Tag: method group

将方法传递给LINQ查询

在我正在进行的项目中,我们有许多静态表达式,当我们在它们上面调用Invoke方法并将lambda表达式的参数传递给它时,我们必须在本地范围内使用变量。 今天,我们声明了一个静态方法,其参数正是查询所期望的类型。 所以,我的同事和我正在搞乱,看看我们是否可以在查询的Select语句中使用此方法来执行项目,而不是在整个对象上调用它,而不将其带入本地范围。 它奏效了! 但我们不明白为什么。 想象一下像这样的代码 // old way public static class ManyExpressions { public static Expression<Func UsefulExpression { get { // TODO implement more believable lies and logic here return (sdt) => sdt.someCondition == true && false || true; } } } public class ARealController : BaseController { /* many declarations of important things […]

lambda表达式与方法组之间的区别

有什么区别 Class1.Method1(“cId”, Facade.Customers.GetSingle); 和 Class1.Method1(“cId”, x => Facade.Customers.GetSingle(x)); ? Resharper建议使用第一个表达式。

C#委托与lambda表达式的反演

下面的第二个测试方法不编译(不能将lambda表达式转换为目标类型D1 )。 这是否意味着(非generics)委托契约不适用于lambda表达式? [TestFixture] public class MyVarianceTests { private abstract class Animal {} private class Tiger : Animal {} private delegate Type D1(Tiger tiger); private static Type M1(Animal animal) { return animal.GetType(); } [Test] public void ContravariantDelegateWithMethod() { D1 func = M1; Type result = func(new Tiger()); Assert.AreEqual(result, typeof (Tiger)); } [Test] public void ContravariantDelegateWithLambda() […]

C#方法组怪异

我发现了一些非常奇怪的东西,我希望能更好地理解。 var all = new List{ new int[]{1,2,3}, new int[]{4,5,6}, new int[]{7,8,9} }; all.ForEach(n => n.ForEach(i => Console.WriteLine(i))); 可以改写为: … all.ForEach(n => n.ForEach(Console.WriteLine)); 如何省略lambda表达式参数(i =>)并仍然将当前项传递给console.WriteLine? 感谢您的任何见解。 -Keith

如果可用,使用C#方法组有什么好处吗?

处理List类的东西时,您可以编写以下内容: list.ForEach(x => Console.WriteLine(x)); 或者您可以使用方法组执行相同的操作: list.ForEach(Console.WriteLine); 我更喜欢第二行代码,因为它对我来说看起来更干净,但这有什么好处吗?