2015-07-20 105 views
5

我已经发现以下的一些例子中的代码部分,同时学习Func键<>语法:Func键<>与lambda表达式

public static class Lambda 
    { 
     public static int MyFunc(Func<string, int> func) 
     { 
      //some logic 
      return 0; 
     } 
    } 

而样品呼叫:

var getInt = Lambda.MyFunc((url) => { Console.WriteLine(url); return 0; } 

而我的问题:

为什么要传递上面的func作为lambda表达式与此(url)是允许的,如果值从未分配(或可能是?)? 这样传递Func有什么意义?

编辑: 澄清我的问题。我只想知道这个示例调用 - 如果不能启动该值,编译器就不会禁止编译器禁止像上面那样将字符串作为参数传递(使用lambda(url)=> {})。有没有任何例子可以用于像上面那样传递字符串?

+0

你写它的方式,它不会做任何事情,除非你在y中调用func我们的'MyFunc'方法... –

+2

我想无论发生什么//某些逻辑可能在这里很重要 –

+1

Radek,请考虑编辑您的帖子以匹配Jon的答案,如果他回答了您正在寻找的内容。否则,在当前形式中,你的帖子是非常不清楚的,因为如果完全不使用该值,那么真的可以传递任何对象(包括空值)。 –

回答

10

url是用于lambda表达式的参数的名称。这就像写一个像这样的方法:

public static int Foo(string url) 
{ 
    Console.WriteLine(url); 
    return 0; 
} 

然后从它创建一个委托:

Func<string, int> func = Foo; 

现在为了呼叫委托,您需要提供一个字符串 - 这再成为参数的值,就像如果你正常地调用方法一样:

int result = func("some url"); 
相关问题