C#의 Int16 구조체는 -32,768부터 +32,767까지의 값을 표현할 수 있는 16비트 부호 있는(signed) 정수를 나타냅니다. C#에서는 short 키워드로 Int16을 사용할 수 있으며, 메모리를 절약해야 하는 상황에서 유용하게 활용됩니다.
Int16 구조체의 주요 필드
Int16 구조체에는 다음과 같은 두 개의 상수 필드가 있습니다.
| 번호 | 필드 및 설명 |
|---|---|
| 1 | MaxValue — Int16이 가질 수 있는 최댓값(32,767)을 나타내는 상수 필드입니다. |
| 2 | MinValue — Int16이 가질 수 있는 최솟값(-32,768)을 나타내는 상수 필드입니다. |
Int16 구조체의 주요 메서드
Int16 구조체에서 자주 사용되는 메서드는 다음과 같습니다.
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | CompareTo(Int16) — 현재 인스턴스와 지정된 16비트 부호 있는 정수를 비교하고, 이 인스턴스의 값이 더 작은지, 같은지, 큰지를 나타내는 정수를 반환합니다. |
| 2 | CompareTo(Object) — 현재 인스턴스와 지정된 객체를 비교하고, 그 결과를 나타내는 정수를 반환합니다. |
| 3 | Equals(Int16) — 현재 인스턴스가 지정된 Int16 값과 같은지 여부를 나타내는 값을 반환합니다. |
| 4 | Equals(Object) — 현재 인스턴스가 지정된 객체와 같은지 여부를 나타내는 값을 반환합니다. |
| 5 | GetHashCode() — 현재 인스턴스의 해시 코드를 반환합니다. |
| 6 | GetTypeCode() — 값 형식 Int16에 대한 TypeCode를 반환합니다. |
| 7 | Parse(String) — 숫자의 문자열 표현을 해당하는 16비트 부호 있는 정수로 변환합니다. |
이제 실제 예제를 통해 Int16 구조체의 주요 메서드들을 살펴보겠습니다.
Int16.GetHashCode() 메서드
C#의 Int16.GetHashCode() 메서드는 현재 인스턴스의 해시 코드를 반환하는 데 사용됩니다.
구문
public override int GetHashCode ();
예제 1
다음은 Int16.GetHashCode() 메서드를 구현한 첫 번째 예제입니다.
using System;
public class Demo {
public static void Main() {
short val1 = 20;
short val2 = 25;
Console.WriteLine("Value1 = "+val1);
Console.WriteLine("Value2 = "+val2);
Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
}
}출력 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Value1 = 20 Value2 = 25 HashCode for value1 = 1310740 HashCode for value2 = 1638425 Are they equal? = False
예제 2
이번에는 Int16.MaxValue를 활용한 또 다른 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main() {
short val1 = 0;
short val2 = Int16.MaxValue;
Console.WriteLine("Value1 = "+val1);
Console.WriteLine("Value2 = "+val2);
Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
}
}출력 결과
Value1 = 0 Value2 = 32767 HashCode for value1 = 0 HashCode for value2 = 2147450879 Are they equal? = False
Int16.GetTypeCode() 메서드
C#의 Int16.GetTypeCode() 메서드는 값 형식 Int16에 대한 TypeCode를 반환하는 데 사용됩니다.
구문
public TypeCode GetTypeCode ();
예제 1
다음은 Int16.GetTypeCode() 메서드를 구현한 예제입니다.
using System;
public class Demo {
public static void Main() {
short val1 = 0;
short val2 = Int16.MaxValue;
Console.WriteLine("Value1 = "+val1);
Console.WriteLine("Value2 = "+val2);
Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
TypeCode type1 = val1.GetTypeCode();
TypeCode type2 = val2.GetTypeCode();
Console.WriteLine("TypeCode for val1 = "+type1);
Console.WriteLine("TypeCode for val2 = "+type2);
}
}출력 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Value1 = 0 Value2 = 32767 HashCode for value1 = 0 HashCode for value2 = 2147450879 Are they equal? = False TypeCode for val1 = Int16 TypeCode for val2 = Int16
예제 2
마지막으로 서로 다른 값으로 GetTypeCode() 메서드를 확인해 보겠습니다.
using System;
public class Demo {
public static void Main() {
short val1 = 23;
short val2 = 0;
Console.WriteLine("Value1 = "+val1);
Console.WriteLine("Value2 = "+val2);
Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
TypeCode type1 = val1.GetTypeCode();
TypeCode type2 = val2.GetTypeCode();
Console.WriteLine("TypeCode for val1 = "+type1);
Console.WriteLine("TypeCode for val2 = "+type2);
}
}출력 결과
Value1 = 23 Value2 = 0 HashCode for value1 = 1507351 HashCode for value2 = 0 Are they equal? = False TypeCode for val1 = Int16 TypeCode for val2 = Int16
정리
Int16 구조체는 16비트 범위의 정수를 다룰 때 유용하며, GetHashCode()로 해시 코드를 얻고 GetTypeCode()로 타입 정보를 확인할 수 있습니다. 값의 범위가 작아도 되는 경우 int 대신 short(Int16)를 사용하면 메모리를 절약할 수 있다는 점을 기억하세요.