Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#의 IS 대 AS 연산자

<시간/>

IS 연산자

C#의 "is" 연산자는 개체의 런타임 형식이 지정된 형식과 호환되는지 여부를 확인합니다.

다음은 구문입니다 -

expr is type

여기, expr 표현입니다

유형 유형의 이름입니다.

다음은 C# &minis;

에서 is 연산자의 사용법을 보여주는 예입니다.

예시

using System;

class One { }
class Two { }

public class Demo {
   public static void Test(object obj) {
      One x;
      Two y;

      if (obj is One) {
         Console.WriteLine("Class One");
         x = (One)obj;
      } else if (obj is Two) {
         Console.WriteLine("Class Two");
         y = (Two)obj;
      } else {
         Console.WriteLine("None of the classes!");
      }
   }

   public static void Main() {
      One o1 = new One();
      Two t1 = new Two();
      Test(o1);
      Test(t1);
      Test("str");
      Console.ReadKey();
   }
}

출력

Class One
Class Two
None of the classes!

AS 연산자

"as" 연산자는 호환되는 유형 간의 변환을 수행합니다. 캐스트 작업과 같으며 참조 변환, nullable 변환 및 boxing 변환만 수행합니다. as 연산자는 사용자 정의 변환과 같은 다른 변환을 수행할 수 없으며 대신 캐스트 표현식을 사용하여 수행해야 합니다.

다음은 C#에서 as 연산의 사용법을 보여주는 예입니다. 변환에 사용된 그대로 −

string s = obj[i] as string;

C#에서 'as' 연산자로 작업하려면 다음 코드를 실행해 보세요. -

예시

using System;

public class Demo {
   public static void Main() {
      object[] obj = new object[2];
      obj[0] = "jack";
      obj[1] = 32;

      for (int i = 0; i < obj.Length; ++i) {
         string s = obj[i] as string;
         Console.Write("{0}: ", i);
         if (s != null)
         Console.WriteLine("'" + s + "'");
         else
         Console.WriteLine("This is not a string!");
      }
      Console.ReadKey();
   }
}

출력

0: 'jack'
1: This is not a string!