[C#] C # 람다 식에 둘 이상의 문이있을 수 있습니까?

C # 람다 식에 둘 이상의 문이 포함될 수 있습니까?

(편집 : 아래의 여러 답변에서 언급 했듯이이 질문은 원래 “문”이 아닌 “줄”에 대해 질문했습니다.



답변

확실한:

List<String> items = new List<string>();

var results = items.Where(i => 
            {
                bool result;

                if (i == "THIS")
                    result = true;
                else if (i == "THAT")
                    result = true;
                else
                    result = false;

                return result;
            }
        );


답변

(나는 당신이 실제로 여러 줄이 아닌 여러 진술에 대해 이야기하고 있다고 가정합니다.)

중괄호를 사용하여 람다 식에 여러 명령문을 사용할 수 있지만 중괄호를 사용하지 않는 구문 만 표현식 트리로 변환 할 수 있습니다.

// Valid
Func<int, int> a = x => x + 1;
Func<int, int> b = x => { return x + 1; };        
Expression<Func<int, int>> c = x => x + 1;

// Invalid
Expression<Func<int, int>> d = x => { return x + 1; };


답변

람다 식에 원하는만큼 줄 바꿈을 넣을 수 있습니다. C #은 줄 바꿈을 무시합니다.

당신은 아마 여러 진술 에 대해 물어볼 것입니다 .

여러 문장을 중괄호로 묶을 수 있습니다.

설명서를 참조하십시오 .


답변

C # 7부터 :

한 줄 진술 :

int expr(int x, int y) => x + y + 1; 

여러 줄로 된 진술 :

int expr(int x, int y) { int z = 8; return x + y + z + 1; };

이것들은 로컬 함수라고하지만, 이것은 다음보다 약간 깨끗해 보이고 실제로 동일하다고 생각합니다

Func<int, int, int> a = (x, y) => x + y + 1;

Func<int, int, int> b = (x, y) => { int z = 8; return x + y + z + 1; };


답변

Func<string, bool> test = (name) => 
{
   if (name == "yes") return true;
   else return false;
}


답변

에서 람다 식 (C # 프로그래밍 가이드) :

명령문 람다의 본문은 여러 개의 명령문으로 구성 될 수 있습니다. 그러나 실제로는 일반적으로 2 개 또는 3 개를 넘지 않습니다.


답변

C # 7.0을 사용하면 다음과 같이 사용할 수도 있습니다

Public string ParentMethod(int i, int x){
    int calculation = (i*x);
    (string info, int result) InternalTuppleMethod(param1, param2)
    {
        var sum = (calculation + 5);
        return ("The calculation is", sum);
    }
}