전 C# 비교적 새로운 오전과 내가 인수의 종류는 다음과 같은 기능의 창 부분 클래스에 전달되는 궁금 해서요 :어떤 종류의 인수가 전달됩니까?
public static void process(this Window window){...}
내가 유형이 Window
알지만, 왜 갖고있는 것 같다 않습니다 인수 - 유형 - 인수 구문? 그리고 실제로 인수가 전달됩니다.
감사합니다.
추신 : 저는 실제로 정적 부분을 잊었습니다! 미안!
전 C# 비교적 새로운 오전과 내가 인수의 종류는 다음과 같은 기능의 창 부분 클래스에 전달되는 궁금 해서요 :어떤 종류의 인수가 전달됩니까?
public static void process(this Window window){...}
내가 유형이 Window
알지만, 왜 갖고있는 것 같다 않습니다 인수 - 유형 - 인수 구문? 그리고 실제로 인수가 전달됩니다.
감사합니다.
추신 : 저는 실제로 정적 부분을 잊었습니다! 미안!
서명의 정적 부분을 잊어 버렸다는 가정하에 확장 방법입니다. 데코레이터 패턴의 대안으로 기존 클래스에 기능을 추가 할 수 있습니다. 서명의 this
은 확장하려는 클래스임을 지정합니다. 예를 들면 : - 메서드 구문
var w = new Window();
w.Process();
이 방법에서는 아무런 인수도 전달하지 않습니다. Window
이라는 유형의 확장 메소드입니다. (주문이 오해하지 않도록, 우리는 확장 메서드에 인수를 전달할 수 있습니다,하지만이 확장 메서드는 인수가 없습니다.) 그래서 아래와 같이 사용할 수 있습니다. window
이의 인스턴스
window.process()
Window
.
확장 방법에 대한 자세한 내용은 here을 참조하십시오.
당신이 static
수정을 추가하는 의미 가정,이 객체를 통해 caled 할 수있는 Extnsion 방법이다. 그럼에도 불구하고, 컴파일러는 이것을 컴파일 할 때 타입 - 메소드 (객체) 구문으로 바꿀 것입니다. 이것은 단지 구문 설탕으로 첫 번째 방법으로 배열됩니다. 이 때문에 인식 할 수없는 메서드에 대한 오류는 no extension method accepting a first argument of type...
절을 포함합니다.
이것은 C# "확장 메서드"기능입니다. 코드를 사용하여 다른 클래스를 확장 할 수 있습니다.
예를 들어 "int"유형에 새 메소드를 추가 할 수 있습니다.
게시 한 메서드는 Window 클래스를 확장하여 "프로세스"메서드를 추가합니다 (C# 표준에 따라 "프로세스"와 같은 이름을 지정해야 함).
window.process();
당신 수수 읽고 예를 들면 여기를 사용하는 방법에 대한 자세한 : 그것은 당신이 그런 식으로, 코드에서 사용할 수 있습니다 http://msdn.microsoft.com/en-us/library/bb383977.aspx
'확장 Method' – dcastro
를 컴파일하지 않는 @FlatEric 그것은 깨진 확장 방법입니다. 확장 메소드는 정적이어야합니다. –
라고이 –