ASP.NET C#

Type conversions(형변환)

ToKor 2021. 1. 5. 01:34

변수에 복사시 타입이 다른 경우 실행

- 암시적(implicit)변환, 데이터 손실이 없음

int intNum = 100;  long lingNum = intNum   // 작은타입 -> 큰타입 (암시적 변환가능)

long longNum = 100L;  int intNum = longNum  // 큰타입 -> 작은타입(불가능)

Parent p = new Parent(); Child c = new Child();

p = c;  //  파생 클래스에서 기본클래스로 암시적 변환 가능(파생 클래스에 항상 기본 클래스의 모든 멤버가 포함되므로 특수 구문이 필요하지 않음)

c = p;  //  기본클래스에서 파생클래스로 암시적 변환 불가능

 

- 명시적 변환(Explicit Conversion)

   : 변환시 정보손실의 위험이 있는경우, cast operator 이용하여 숫자 타입간, 클래스 타입간 변환

double a = 30.77;

int b; b = (int)a;  //  0.77의 데이터 손실 그러나 타입변환

// 파생클래스를 기본클래스에 저장, 그리고 다시 파생클래스로 형변화시에만 가능
Parent p = new Parent();   Child c = new Child();  c = (Child)p;  // InvalidCastException
Parent p = new Child();  Child c = new Child();  c = (Child)p;  // 정상작동

// 즉풀이하면,
(Child c = new Child();  Parent p = c;  Child c2 = (child)p;

 

- 사용자 정의변환(User-defined Conversion)

 

- Helper Class

// System.Convert 클래스, Parse 메소드 사용

string str = “1000”;
int num = Convert.ToInt32(str);
int num2 = Int32.Parse(str)