Programing

정적 확장 방법

crosscheck 2020. 6. 6. 08:17
반응형

정적 확장 방법


가능한 중복 :
기존 정적 클래스에 확장 메소드를 추가 할 수 있습니까?

정적 확장 메서드를 클래스에 추가 할 수있는 방법이 있습니까?

특히 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

반응형