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)