我有几个方法都具有相同的签名(参数和返回值),但不同的名称和方法的内部是不同的.我想传递方法的名称以运行到另一个将调用传入方法的方法.
public int Method1(string)
{
... do something
return myInt;
}
public int Method2(string)
{
... do something different
return myInt;
}
public bool RunTheMethod([Method Name passed in here] myMethodName)
{
... do stuff
int i = myMethodName("My String");
... do more stuff
return true;
}
public bool Test()
{
return RunTheMethod(Method1);
}
Run Code Online (Sandbox Code Playgroud)
此代码不起作用,但这是我想要做的.我不明白的是如何编写RunTheMethod代码,因为我需要定义参数.
除了保存代码行之外,lambda表达式还有什么用处吗?
lambda提供的特殊功能是否解决了不容易解决的问题?我见过的典型用法是代替写这个:
Comparator<Developer> byName = new Comparator<Developer>() {
@Override
public int compare(Developer o1, Developer o2) {
return o1.getName().compareTo(o2.getName());
}
};
Run Code Online (Sandbox Code Playgroud)
我们可以使用lambda表达式来缩短代码:
Comparator<Developer> byName =
(Developer o1, Developer o2) -> o1.getName().compareTo(o2.getName());
Run Code Online (Sandbox Code Playgroud) 我刚刚在本论坛的一些问题中提到了这种语法,但Google和任何其他搜索引擎都会在搜索中阻止除字母和数字之外的任何内容,因此无法搜索"=>".
那么有谁能告诉我它是什么以及如何使用它?
我是新手c#,这是我正在努力获得一些经验的个人项目的摘录.
当调用getRecipe()此类之外的函数时,我出现以下错误.我要保持我List私人的CookBook类,但仍然能够获得一个参考的一个Recipes中List.我不想List公开.
任何意见是极大的赞赏!谢谢
错误
return type 'cookbook.Recipe is less accessible than method 'cookbook.CookBook.getRecipe(string)'
Run Code Online (Sandbox Code Playgroud)
public class CookBook
{
private List<Recipe> listOfRecipes = new List<Recipe> {};
public Recipe getRecipe(string name)
{
int i = 0;
while (listOfRecipes[i].getRecipeName() != name)
{
i++;
}
return listOfRecipes[i];
}
}
Run Code Online (Sandbox Code Playgroud) 我试图理解为什么我们真的需要rubda(或任何其他语言)lambda或proc?
#method
def add a,b
c = a+b
end
#using proc
def add_proc a,b
f = Proc.new {|x,y| x + y }
f.call a,b
end
#using lambda function
def add_lambda a,b
f = lambda {|x,y| x + y}
f.call a,b
end
puts add 1,1
puts add_proc 1,2
puts add_lambda 1,3
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法进行简单的添加:1.正常函数def,2.使用proc和3.使用lambda.
但是为什么以及在现实世界中使用lambda?任何无法使用函数和lambda应该使用的示例.
我已经读过Lambda表达式是C#的一个非常强大的补充,但我发现自己对它们感到困惑.他们如何改善我的生活或使我的代码更好?有人能指出学习这些表达的好资源吗?
它们看起来很酷,但它们与我作为asp.net开发人员的日常生活有何关系?
编辑:感谢您的示例,并感谢Eric White的文章链接.我现在还在消化它们.一个简单的问题:lambda表达式对查询以外的任何东西都有用吗?我见过的每个例子都是一个查询结构.
我真的没有得到 lambda表达式.虽然他们自ALGOL时代就已存在,但直到最近,当Python和Ruby变得非常受欢迎时,我才开始听到它们.既然C#具有=>语法,那么我的世界(.NET)中的人们越来越多地讨论lamdba表达式.
我已经读过关于lambda演算的维基百科文章,但我不是一个真正的数学家.从实际角度来看,我并不是真的理解它.我什么时候会使用lambda表达式?为什么?我怎么知道这应该是我应该做的?
您能否以前后格式展示如何使用lambda表达式解决问题的示例?任何命令式语言都可以,但C#对我来说最容易理解.
我一直试图解决这个问题很长一段时间(阅读在线博客和关键词),但到目前为止还没有成功.
代表们是什么?什么是Lambda表达式?两者的优点和缺点?何时使用其中一种可能的最佳做法?
提前致谢.
我的职业生涯是在vax系统上用C/C++编写的,但是在几个合同中它都是VB,然后成为VB的专家,然后是VB.net.现在我渴望为微软工作,看起来他们发布的每一份工作都是用C/C++/C#编写的,我几乎看不到C#代码,对我来说这看起来最麻烦,内联语法几乎伤害了我的感受.
我正在寻找关于如何再次获得C#技能的积极,无火焰,有用的建议.Books..Labs..etc?我一直在使用Silverlight和C#编写简单的项目来尝试解决这个问题,但是它非常令人沮丧,因为我可以找到很少的例子来说明每个代码集的外观.我已经用Google搜索了但除了channel9实验室之外还没有找到任何有用的东西,并且正在研究mix10的一些示例代码/项目.
我不是在寻找捷径,而是要有一个良好的技能理解.我发誓,将英语翻译成拉丁语比翻译成C语言更容易.
我最近发现了一个静态方法,声明为:
public class Foo
{
public static Func<HtmlHelper, PropertyViewModel, string> Render = (a, b) =>
{
a.RenderPartial(b);
return "";
};
}
Run Code Online (Sandbox Code Playgroud)
Intellisense建议使用(例如):
string s = Foo.Render(htmlHelper, propertyViewModel);
Run Code Online (Sandbox Code Playgroud)
那么看起来以下是等价的:
public static string Render(HtmlHelper a, PropertyViewModel b)
{
a.RenderPartial(b);
return "";
}
Run Code Online (Sandbox Code Playgroud)
A)第一种风格的名称是什么?我意识到它正在使用lambdas; 这=是绊倒我的标志.我无法将其标记化;)
B)如果两个代码块是等价的,使用前者比后者有什么好处?