code

_ => Lambda 표현식에서이 밑줄은 무엇을 의미합니까?

codestyles 2020. 8. 13. 23:24
반응형

_ => Lambda 표현식에서이 밑줄은 무엇을 의미합니까?


람다 식은 _=> expr무슨 뜻인가요?

_람다에 대한 입력 의 목적은 무엇입니까 ?

예:

int count = 0;
list.ForEach(_ => count += 1);

매개 변수에 신경 쓰지 않을 때 사용되는 규칙입니다.


유용한 이름은 아니지만 매개 변수 이름이지만 컴파일 할 코드를 얻기 위해 표현식 에 매개 변수 있음을 지정해야 할 때 일반적으로 사용되는 이름 이지만 실제로는 신경 쓰지 않습니다. 그래서 당신은 그것을 무시할 것입니다.

기본적으로 C #의 법적 식별자가 구성하는 구문을 악용하고 있으며 식별자는 밑줄로 시작하고 다른 것은 포함하지 않을 수 있으므로 매개 변수 이름 일뿐입니다.

다음과 같이 쉽게 작성할 수 있습니다.

var _ = 10;

_유효한 변수 이름입니다. 그들은 단지 _변수로 사용 하고 있습니다.


람다 표현은 대부분 짧고 익명의 코드에서 사용되기 때문에 변수 이름이 때때로 필요하지 않을 수 있습니다. 심지어 코드 블록에서 변수를 사용하지 않더라도 짧은 규칙에 대해 _를 제공합니다.


나는 또한 _ => _.method()지시의인지 적 무게를 줄이기 때문에 한 줄의 메서드 호출 람다 대한 사용을 두 번째로 사용 합니다. 특히 제네릭을 사용할 때 x => x.method()"이 'x'는 무엇입니까? 공간의 좌표입니까?"라는 순식간에 고려 사항을 추가합니다.

다음 경우를 고려하십시오.

Initialize<Client> ( _=>_.Init() );

Generics 호출과 함께 사용되며이 경우 밑줄은 "우회 기호"로 작동합니다. 중복을 방지하고 인수의 유형이 분명하고 사용에서 유추 될 수 있음을 정의합니다. 이는 유형 선언을 반복하지 않도록 'var'를 사용할 때와 같습니다. client=>client.Init()여기에 쓰면 의미를 추가하지 않고 지침이 더 길어집니다.

분명히 이것은 설명 적으로 이름을 지정해야하는 메서드에 전달할 매개 변수에는 적용되지 않습니다. 예 :Do( id=>Log(id) );

람다 식별자가 제네릭 정의에서 연결이 끊어지기 때문에 한 줄 대신 코드 블록을 사용하는 경우 메서드 호출에 대한 단일 밑줄 매개 변수 사용은 거의 정당화 할 수 없습니다. 일반적으로 동일한 식별자를 재사용하려면 설명이 포함 된 이름을 지정하십시오.

요점은, 특히 익명 대리자 생성을 단순화하기 위해 만들어진 람다의 경우, 자세한 내용은 명확성을 위해서만 정당화 될 수 있다는 것입니다. 어쨌든 가독성과 간결함의 균형을 유지하면서 상식을 사용해야합니다. 기호가 실제 기능에 대한 "후크"일 경우 하나의 문자 식별자는 완벽합니다. For-loops와 "i"및 "j"문자가 인덱서로 사용되는 경우입니다.

참고 URL : https://stackoverflow.com/questions/2778362/what-does-this-underscore-mean-in-lambda-expressions

반응형