반응형
정적 확장 방법
가능한 중복 :
기존 정적 클래스에 확장 메소드를 추가 할 수 있습니까?
정적 확장 메서드를 클래스에 추가 할 수있는 방법이 있습니까?
특히 int 인수를 허용하기 위해 Boolean.Parse를 오버로드하고 싶습니다.
요컨대, 당신은 할 수 없습니다.
긴 대답, 확장 방법은 단지 구문 설탕입니다. IE :
문자열에 확장 방법이 있다면 다음과 같이 말하십시오.
public static string SomeStringExtension(this string s)
{
//whatever..
}
그런 다음 전화하면
myString.SomeStringExtension();
컴파일러는 다음과 같이 바꿉니다.
ExtensionClass.SomeStringExtension(myString);
보시다시피 정적 메소드에는 그렇게 할 수 없습니다.
그리고 또 다른 일이 생겼습니다. 기존 클래스에 정적 메소드를 추가 할 수 있는 요점 은 무엇입니까? 똑같은 일을하는 도우미 클래스 만 가질 수 있으므로 실제로 할 수있는 이점은 무엇입니까?
Bool.Parse(..)
vs.
Helper.ParseBool(..);
실제로 테이블에 많은 것을 가져 오지 않습니다 ...
특히 int 인수를 허용하기 위해 Boolean.Parse를 오버로드하고 싶습니다.
int의 확장 기능이 작동합니까?
public static bool ToBoolean(this int source){
//do it
//return it
}
그러면 다음과 같이 호출 할 수 있습니다.
int x = 1;
bool y=x.ToBoolean();
당신이 할 수없는 것 같습니다. 그것에 대한 토론은 여기를 참조하십시오
그래도 잘못 증명되고 싶습니다.
int에 확장 방법을 추가 할 수 있습니다
public static class IntExtensions
{
public static bool Parse(this int value)
{
if (value == 0)
{
return true;
}
else
{
return false;
}
}
public static bool? Parse2(this int value)
{
if (value == 0)
{
return true;
}
if (value == 1)
{
return false;
}
return null;
}
}
이런 식으로 사용
bool bool1 = 0.Parse();
bool bool2 = 1.Parse();
bool? bool3 = 0.Parse2();
bool? bool4 = 1.Parse2();
bool? bool5 = 3.Parse2();
아니요, 그러나 다음과 같은 것을 가질 수 있습니다.
bool b;
b = b.YourExtensionMethod();
참고 URL : https://stackoverflow.com/questions/866921/static-extension-methods
반응형
'Programing' 카테고리의 다른 글
캐시 없음과 재확인의 차이점 (0) | 2020.06.06 |
---|---|
virtualenv에 해당하는 루비? (0) | 2020.06.06 |
Node.js에서 비동기 함수의 긴 중첩을 피하는 방법 (0) | 2020.06.06 |
Entity Framework : 기본 키가없는 테이블 (0) | 2020.06.06 |
C ++ 라이브러리 및 프레임 워크가 스마트 포인터를 사용하지 않는 이유는 무엇입니까? (0) | 2020.06.06 |