C# Prog.
자바에서는 클래스에 속하는 변수를 사용하기 위해서는 변수를 초기화 해주는 작업이 필요합니다. 특히, 원시(primitive) 타입의 변수는 다음과 같이 null값을 넣어줄 수 없습니다. 쓰려면, 참조타입의 래퍼 클래스로 캐스팅 해줘야 합니다.
하지만, C#에서는 자바에서 볼 수 없는 Nullable 형식을 지원하는데요? 이것을 지원해줌으로써 당당히(?) 비어있는 상태 즉, null 값을 가진 상태를 만들어 줄 수 있습니다.
우선 형태는 보시는 바와 같이 타입뒤에 ?을 표기하도록 합니다.
그렇다면, C#도 자바처럼 간단한 테스트를 해봅시다.
위처럼 Nullable이 아닌 원시타입의 변수는 자바와 동일한 오류를 보여주는군요.
정확한 것은 아니지만, 제 느낌은 이렇게 선언해줌으로써, 박싱(BOXING)을 수행하는 것 같습니다. 그냥 참고정도로만 해주세요.
그리고 Nullable 타입은 다음과 같이 두가지 속성 HasValue 와 Value 를 지원합니다.
Value : 해당 변수의 값을 나타냅니다.
그렇다면 한번 써봐야겠죠?
using System;
namespace Test
{
class Test
{
static void Main(string[] args)
{
Console.WriteLine("---------testNull 변수에 null 값을 넣었습니다.---------");
int? testNull = null;
Console.WriteLine("testNull 변수는 값을 가지고 있습니까? " + testNull.HasValue);
Console.WriteLine("testNull 변수가 가지고 있는 값은? " + testNull);
Console.WriteLine("\n\n---------testNull 변수에 100이라는 값을 넣었습니다.---------");
testNull = 100;
Console.WriteLine("testNull 변수는 값을 가지고 있습니까? " + testNull.HasValue);
Console.WriteLine("testNull 변수가 가지고 있는 값은? " + testNull.Value);
Console.WriteLine("testNull 변수가 가지고 있는 값은? " + testNull);
}
}
}
결과는 다음과 같습니다.
상황에 따라서는 아주 유용할 수 있을 것 같은 타입니다. 사실 자바를 사용하면서 계속 의미없는 값으로 초기화해주려니 마음 한켠이 불편했거든요 ^^;;
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 문자열을 숫자로 바꿔봅시다! (2) | 2013.07.23 |
---|---|
[C#] 아주 유용한 매개변수의 특징에 대해서 알아봅시다. (0) | 2013.07.23 |
[C#] ref, out 을 통한 Call by Reference 구현해보기 (3) | 2013.07.23 |
[C#] 알아서 타입을 지정해주는 var 타입을 사용해보자. (0) | 2013.07.17 |
[C#] enum 열거형을 사용해보자. (0) | 2013.07.17 |