본문 바로가기
개발/C#

[C#]형변환

by 민돌이2 2018. 11. 28.

형변환(CAST)


형변환(cast)이란 어떤 형의 변수를 다른 형식으로 변환하는 것이다.

형은 한 번 선언하면 나중에 다른 형의 값을 대입할 수 없는데 두가지 예외가있다.

첫째. 대입해도 값이 변하지 않을 때

둘째. 형을 형변환했을 때

오늘 게시물은 두번재 형변환에 대해서 포스팅한다.


변수

변수의 형을 형변환 할때 값이 변하지 않는다면 가능하다.


예제)

 int a = 123; double x;

 x = a;        // 값이 변하지 않으므로 int형을 double형에 대입 가능( x = 123.0)

 a = (int)x;  // double형의 변수를 int로 형변환하면 대입가능 (a = 123)

 a = x;       // int형 변수 a에 double형 값을 대입하면 컴파일 오류


클래스

클래스도 변수와 마찬가지로 부모 클래스를 자식 클래스로 형변환이 가능하다.


예제)

 Person p1 = new Person();

 UnityChan p2 = new UnityCahn();

 p1 = p2;                // 자식 클래스의 참조를 부모 클래스에 대입 가능

 p2 = p1;                // 부모 클래스의 참조를 자식 클래스에 대입시 컴파일오류

 p2 = (UnityChan)p1; // 부모 클래스이 참조를 형변환해 자식 클래스에 대입 가능


as연산자, 형변환

변수나 클래스 형변환과 as연산자를 사용하여 형변환의 차이점은 실패했을때 나온다.

변수나 클래스 형변환에 실패했을 경우 컴파일 오류를 내지만 as연산자는 형변환 한것을 null을 반환한다.


예제)

 p2 = p1 as UnityChan; 


is연산자

형변환이 가능한지 알아보는 연산자다.

is연산자를 사용해서 조사한 결과 형변환이 불가하다면 false값을 반환한다.


예제)

 if(p1 is UnityChan) {} // 형변환이 가능하다면 처리를 실행한다. 


728x90

'개발 > C#' 카테고리의 다른 글

문자열다루기2  (0) 2019.02.02
문자열 다루기  (0) 2019.01.31
상수와 열거 형식  (0) 2019.01.30
[C#] 제네릭과 컬렉션  (0) 2018.11.29
[C#]네임스페이스  (0) 2018.11.16

댓글