C#의 as 및 is 차이점

5634 단어 C#
C#에서는 모든 것이 대상입니다.따라서 어떤 상수도 하나의 정형 대상이다.여기서 as를 사용했습니다. as는 C# 언어의 키워드입니다.as 연산자는 유형 변환과 유사하지만, 변환이 실패할 때, as 연산자는 이상을 일으키지 않고 비어 있습니다.형식적으로 이런 형식의 표현식:expression as type as 연산자는 인용 변환과 포장 변환만 실행한다.as 연산자는 사용자가 정의한 변환과 같은 다른 변환을 실행할 수 없습니다. 이러한 변환은case 표현식을 사용하여 is에 대한 실행을 대체해야 합니다. 그러나 IS는 당신을 도와 어떠한 변환도 하지 않습니다.그래서 자체적으로 디스플레이 변환을 해야 돼요.
is 조작부호를 변환합니다. 시국이 형식과 호환되는지 자동으로 확인하고 결과를 되돌려줍니다.그리고 이상을 던지지 않습니다.대상이 null로 인용되면 is는false를 되돌려줍니다.
if (cls1 is Class2) 
 {
   Class2 cls2 = (Class2)cls1;
 }
else
   System.Console.WriteLine("Error 2!");

as 연산자를 변환하려면 다음과 같이 하십시오.
Class2 cls2 = cls1 as Class2;
if (cls2!=null)
   System.Console.WriteLine("Ok");
else
   System.Console.WriteLine("Error!");

두 가지 방식을 비교하면 is는 두 번의 대상 유형 검사를 해야 하고 as는 한 번의 대상 유형 검사를 해야 하며, 다시 한 번null 검사를 해야 하며,null 검사 비용은 대상 유형 검사보다 적다.상대적으로 as의 방법은 효율이 높다. 이제 is와 as의 용도를 알게 되었다. 주로 유형의 전환과 판단이다. 만약에 유형이 일치하는지 검사하기만 하면 is만 사용하면 된다. 만약에 유형의 전환을 하려면 as를 직접 사용할 수 있다.사실 강제 변환을 직접 할 수 있습니다. 다만 형식이 맞지 않을 때 오류가 발생할 수 있습니다.try {} catch () {}를 이용해서 할 수 있지만, 던진 이상은 무엇입니까?
유형 변환 1.모든 유형은 기본 유형으로 변환할 수 있으며 스텔스 변환으로 완성할 수 있다.2. 모든 유형이 파생 유형으로 변환될 때 표시된 변환이 있어야 합니다.예: (유형 이름) 객체 이름,3. GetType을 사용하면 모든 객체의 정확한 유형을 얻을 수 있습니다.4. 기본 유형은 Convert 클래스를 사용하여 유형 변환을 수행할 수 있습니다.5.string을 제외한 다른 유형은Parse 방법이 있으며 문자열 형식을 대응하는 기본 형식으로 변환하는 데 사용됩니다.6. 값 유형과 인용 유형의 변환을 포장(boxing) 또는 해체(unboxing)라고 한다.

2. is/as 예


is 변환 규칙:
  • 대상 유형의 호환성을 검사하고 결과true(false)를 되돌려줍니다.2. 이상을 던지지 않는다.3. 대상이null이면false로 되돌아오기;예:
  • 
    object o ="abc";
    if(oisstring) //    
    {
    string s = (string)o; // ,    
    MessageBox.Show(" !");   
    }
    else
    {
    MessageBox.Show(" !");   
    
    }
    

    as 변환 규칙:
    1. 대상 유형의 호환성을 검사하고 변환 결과를 되돌려주며 호환되지 않으면null로 되돌려줍니다.2. 이상을 던지지 않는다.3. 결과가 비어 있는 것으로 판단되면 강제 형식 변환을 실행하면 NullReference Exception 이상을 던집니다.
        object o ="abc";
        string s = oasstring;// ,    
        if(s !=null)
        MessageBox.Show(" !");
        else
        MessageBox.Show(" !");
    

    요약: Is는 명시적으로 변환하기 전에 호환성 검사를 수행합니다. As는 유형 호환성 검사를 수행하고 결과를 반환합니다.
    전재 설명: 원본 링크:https://blog.csdn.net/pitt_xiong/article/details/7409875

    좋은 웹페이지 즐겨찾기