2017-09-26 1 views
1

가 궁금 해서요 (즉시 람다를 호출) :이 javascript-esqe 코드와 동일한 C#이 있습니까? 이 동등한를 작성하는 어떤 방법이 있는지

string test =() => { return "text"; }(); // Error 

공지 즉시 평가하고 반환을 설정하는 효과를 가질 것이다 끝에서() 값을 '테스트'로 설정하십시오.

내가 아는 한, 이렇게 할 방법이 없다.

감사합니다.

+2

'문자열 테스트 = 새로운 Func을 (() => "텍스트")(); ' –

+1

당신은이 게시물을 본 적이 : https://stackoverflow.com/questions/10198370/execute-lambda-expression - 정의 직후? –

답변

2

명시 적 대리자 형식을 지정해야합니다 :

string test = (new Func<string>(() => { return "text"; }))(); 

하거나

string test = (new Func<string>(() => "text"))(); 

당신은 람다 지역 일부 변수의 범위를 줄이기 위해이 일을하고 있다면 당신은 중첩 된 선언 할 수 있습니다 C#의 메서드 내 범위

string test; 
{ 
    var r = new Random(); 
    string i = r.Next().ToString(); 
    test = i + i; 
}