File 클래스의 확장 메서드를 만들려고 할 때 클래스가 정적이므로이 작업을 수행 할 수 없다는 오류가 발생합니다. 그러나 이것이 왜 확장 메소드의 생성을 멈추게하는지 모르겠다. 거기에는 어떤 의미가 있는가?정적 클래스의 확장 메서드를 만들 수없는 이유는 무엇입니까?
감사합니다.
File 클래스의 확장 메서드를 만들려고 할 때 클래스가 정적이므로이 작업을 수행 할 수 없다는 오류가 발생합니다. 그러나 이것이 왜 확장 메소드의 생성을 멈추게하는지 모르겠다. 거기에는 어떤 의미가 있는가?정적 클래스의 확장 메서드를 만들 수없는 이유는 무엇입니까?
감사합니다.
개체의 인스턴스에서 확장 메서드가 호출됩니다.
myObj.ExtensionMethod();
정적 클래스가있는 경우 인스턴스를 가질 수 없습니다. 따라서, 확장 메소드를 호출 할 아무 것도 없습니다.
의도적으로 extension method이 클래스의 인스턴스를 가져야하므로 첫 번째 매개 변수로 확장됩니다. 그리고 그것은 정적 클래스이고 인스턴스를 가질 수 없기 때문에 분명히 File의 인스턴스를 전달할 수 없습니다.
역순으로 표현하면 definition of any extension method을 보면 첫 번째 매개 변수는 항상 this
키워드에 의해 입증 된 개체의 인스턴스입니다. 인스턴스가 없기 때문에 논리적으로이 동작은 정적 클래스에서 작동하지 않습니다.
확장 방법의 샘플 - 이
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
}
}
는 왜 정적 클래스에 대한 확장 메서드를 만들 수 없습니다 처음 PARAM 참조?
C# 개발자 팀이 아직이 기능을 구현하지 않았기 때문에. F# has chosen to implement it 그래도.
확장 속성과 동일합니다. F #에는 그 (것)들이 있고 Boo has had them since (at least) 2006.
답변 해 주셔서 감사합니다. 그것은 수치이지만 큰 손실은 아닙니다. – dotnetdev