IT박스

정적 암시 적 연산자

itboxs 2020. 6. 26. 19:05
반응형

정적 암시 적 연산자


최근 에이 코드를 찾았습니다.

 public static implicit operator XElement(XmlBase xmlBase)
 {
     return xmlBase.Xml;
 }

무슨 static implicit operator뜻입니까?


이것은 변환 연산자 입니다. 이 코드를 작성할 수 있음을 의미합니다.

XmlBase myBase = new XmlBase();
XElement myElement = myBase;

그리고 컴파일러는 불평하지 않을 것입니다! 런타임에 변환 연산자가 실행 myBase되어 인수로 전달 되고 유효한 XElement결과를 반환합니다 .

개발자가 컴파일러에게 알려주는 방법입니다.

"이것들은 완전히 관련이없는 두 가지 유형처럼 보이지만 실제로는 다른 형식으로 변환하는 방법이 있습니다.이를 수행하는 방법에 대한 논리를 다루겠습니다."


당신은 변환 할 수 있습니다 암시 운영자 수단 등 XmlBaseXElement암시.

XmlBase xmlBase = WhatEverGetTheXmlBase();
XElement xelement = xmlBase;   
//no explicit convert here like: XElement xelement = (XElement)xmlBase;

암시 적 변환 연산자입니다 ( (type)변환 구문 이 필요한 명시 적 연산자와 반대 )


또 다른 흥미로운 사용법은 (Unity가 객체 (따라서 MonoBehavior의 인스턴스)가 null인지 확인한 것입니다)입니다.

public static implicit operator bool (CustomClass c)
{
    if (c == null) return false;
    else return true;
}

그렇게하면 다음과 같이 할 수 있습니다 :

void Method ()
{
    CustomClass c1 = null;
    CustomClass c2 = new CustomClass ();

    bool b1 = c1; // is false
    bool b2 = c2; // is true

    if (!c1 && c2)
    {
        // Do stuff
    }
}

분명히 가장 악명 높은 용도는 클래스 중 하나를 다른 클래스로 변환하는 데 사용하는 것일 수 있습니다. 그러나 기본 유형과 함께 사용하는 것도 고려할 가치가 있습니다.

참고 URL : https://stackoverflow.com/questions/4273743/static-implicit-operator

반응형