2009-07-31 5 views
0

는 다음 내가이의 라인을 따라 뭔가 (C#의 의사 코드)를 수행 할 C#을?자바 스크립트와 같은 익명 함수는

var greeting = "Hello" + function() 
{ 
    return " World"; 
}() + "!"; 

에서 할 수 있습니다 그 청크 논리를 별도의 방법으로 이동하는 대신 일부 논리의 인라인 범위 지정을 구현하려고합니다.

답변

2

익명 형식을 사용하는 경우 익명 메서드 또는 람다 식을 명시 적으로 캐스팅해야합니다. 형식이 이미 알려진 속성에 할당하는 경우에는 그렇지 않습니다. 예 :

var cell = new TableCell { CssClass = "", Text = (Func<string>) (() => 
{ 
    return "logic goes here"; 
})}; 

다소 어색하지만 작동합니다.

네, 확실히 이런 익명의 함수를 사용할 수 있습니다. 텍스트를 검색 할 때 명시 적으로 호출해야합니다, 당신을 마음 :

Console.WriteLine("{0}: {1}", cell.CssClass, cell.Text()); 
9
var greeting = "Hello" + new Func<String>(() => " World")() + "!"; 
+0

내 질문에 업데이트되었습니다. – roosteronacid

+0

ㅎ, 아주 잘됐다! –

+0

당신의 대답이 나를 도왔지만 Jon Skeet의 대답만큼 좋은 질문은 아닙니다. – roosteronacid

2

곧에 넣어 더 자세한 자신을 답변 :

var tr = new TableRow { CssClass = "" }; 

tr.Cells.AddRange(new [] 
{ 
    new TableCell { CssClass = "", Text = "Hello" }, 
    new TableCell { CssClass = "", Text = new Func<String>(() => 
    { 
     // logic goes here 
     return ""; 
    })()} 
}); 
관련 문제