is 연산자
is 연산자는 식 결과의 런타임 형식이 지정된 형식과 호환되는지 확인합니다. 결과값으로 true, false를 반환합니다.
Java에서는 동일한 기능을 제공하는 instanceof를 사용한다.
Syntax
expression is type
public class Base { }
public class Derived : Base { }
public static class IsOperatorExample
{
public static void Main()
{
object b = new Base();
Console.WriteLine(b is Base); // output: True
Console.WriteLine(b is Derived); // output: False
object d = new Derived();
Console.WriteLine(d is Base); // output: True
Console.WriteLine(d is Derived); // output: True
}
}
as 연산자
as 연산자는 식의 결과를 지정된 참조 또는 nullable 값 형식으로 명시적으로 변환합니다. 반환할 수 없는 경우 as 연산자는 null을 반환합니다. () 캐스트 식과 달리 as 연산자는 예외를 throw하지 않습니다. 결과값으로 해당 type으로 변환해서 반환합니다.
Syntax
expression as type
IEnumerable<int> numbers = new[] { 10, 20, 30 };
IList<int> indexable = numbers as IList<int>;
if (indexable != null)
{
Console.WriteLine(indexable[0] + indexable[indexable.Count - 1]); // output: 40
}
typeof 연산자
typeof 연산자는 컴파일 타임에 해당 타입을 반환합니다. 인자로 Type 그 자체를 받아서 인자의 표시된 타입을 반환합니다.
Syntax
System.Type type = typeof(int);
void PrintType<T>() => Console.WriteLine(typeof(T));
Console.WriteLine(typeof(List<string>));
PrintType<int>();
PrintType<System.Int32>();
PrintType<Dictionary<int, char>>();
// Output:
// System.Collections.Generic.List`1[System.String]
// System.Int32
// System.Int32
// System.Collections.Generic.Dictionary`2[System.Int32,System.Char]
GetType()
GetType() 메소드는 해당 인스턴스의 타입을 반환합니다. 다른 연산자들과 달리 GetType()은 메소드입니다.
System.Object에 정의된 메서드이므로 모든 .NET 형식을 나타내는 객체는 GetType() 메소드를 이용하여 Type을 반환 할 수 있습니다.
Syntax
public Type GetType ();
using System;
public class MyBaseClass {
}
public class MyDerivedClass: MyBaseClass {
}
public class Test
{
public static void Main()
{
MyBaseClass myBase = new MyBaseClass();
MyDerivedClass myDerived = new MyDerivedClass();
object o = myDerived;
MyBaseClass b = myDerived;
Console.WriteLine("mybase: Type is {0}", myBase.GetType());
Console.WriteLine("myDerived: Type is {0}", myDerived.GetType());
Console.WriteLine("object o = myDerived: Type is {0}", o.GetType());
Console.WriteLine("MyBaseClass b = myDerived: Type is {0}", b.GetType());
}
}
// The example displays the following output:
// mybase: Type is MyBaseClass
// myDerived: Type is MyDerivedClass
// object o = myDerived: Type is MyDerivedClass
// MyBaseClass b = myDerived: Type is MyDerivedClass
함께 읽으면 좋은 글
'프로그래밍 > C#' 카테고리의 다른 글
인물 탐구 - C#의 아버지 아네르스 하일스베르(Anders Hejlsberg) (14) | 2023.04.24 |
---|---|
C# 쓰레드(Thread)에 대해서 (10) | 2023.04.19 |
C# 이벤트(Event)에 대해서 알아보자 (4) | 2023.04.05 |
C# Ref 와 Out 키워드 차이점에 대해서 (0) | 2023.04.04 |
C# 확장 메서드(Extension Method) (2) | 2023.04.03 |
댓글