C#의 정적 메소드에 대한 공식 매개 변수에서 "this"키워드 사용

StackOverflow https://stackoverflow.com/questions/846766

  •  21-08-2019
  •  | 
  •  

문제

다음과 같은 C# 코드의 여러 인스턴스를 발견했습니다.

public static int Foo(this MyClass arg)

나는 무엇에 대한 설명을 찾을 수 없었습니다. this 키워드는이 경우입니다. 통찰력이 있습니까?

도움이 되었습니까?

해결책

이것은 an입니다 확장 방법. 여기를 참조하십시오 설명.

확장 방법을 사용하면 개발자가 기존 CLR 유형의 공개 계약에 새로운 메소드를 추가하거나 원래 유형을 다시 컴파일하지 않고도 새로운 방법을 추가 할 수 있습니다. 확장 방법은 오늘날 동적 언어 내에서 인기있는 "Duck Typing"의 유연성을 강력한 언어의 성능 및 컴파일 타임 검증과 혼합하는 데 도움이됩니다.

확장 방법은 다양한 유용한 시나리오를 가능하게하고 강력한 LINQ 쿼리 프레임 워크를 가능하게하는 데 도움이됩니다.

그것은 당신이 전화 할 수 있음을 의미합니다

MyClass myClass = new MyClass();
int i = myClass.Foo();

보다는

MyClass myClass = new MyClass();
int i = Foo(myClass);

이것은의 구성을 허용합니다 유창한 인터페이스 아래에 언급 된 바와 같이.

다른 팁

Scott Gu의 인용 블로그 게시물 잘 설명합니다.

저에게 질문에 대한 답은 다음 게시물의 다음 진술에 있습니다.

위의 정적 메소드에 유형 문자열의 첫 번째 매개 변수 인수 이전에 "이"키워드가 어떻게가 있는지 확인하십시오. 이것은 컴파일러 에게이 특정 확장 방법이 유형의 "string"객체에 추가되어야 함을 알려줍니다. IsValidEmailAddress () 메소드 구현 내에서 메소드가 호출되는 실제 문자열 인스턴스의 모든 공개 속성/메소드/이벤트에 액세스하고 유효한 이메일인지 아닌지에 따라 true/false를 반환 할 수 있습니다.

Preet Sangha의 설명 외에도 :
Intellisense는 파란색 화살표 (예 : "Aggregate <>"앞에 확장 방법을 표시합니다.

enter image description here

당신은 필요합니다

using the.namespace.of.the.static.class.with.the.extension.methods;

확장 방법이 나타나고 사용할 수 있도록,이를 사용하는 코드와 다른 네임 스페이스에있는 경우.

그들은 확장 방법. 완전히 새로운 것에 오신 것을 환영합니다 유창한 세계. :)

나는 방금 다른 날에 직접 배웠습니다.이 키워드는 그 방법이 그 수업을 진행하는 수업의 확장이라고 정의합니다. 따라서 MyClass는 FOO라는 새로운 확장 방법을 갖습니다 (매개 변수를 허용하지 않고 int를 반환하지 않으며 다른 공개 메소드와 같이 사용할 수 있음).

"이"는 매개 변수 목록에서 다음 클래스를 확장합니다.

따라서 아래의 메소드 서명에서 "이"String을 확장합니다 ". 라인은이 방법에 대한 일반적인 인수로 함수로 전달됩니다. public static string [] splitcsvline (이 문자열 줄)

위의 예에서 "이"클래스는 내장 "문자열"클래스를 확장하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top