728x90
1. 박싱 / 언박싱
1) 박싱
- 변수에 값을 대입할 때 일어나는 기능으로 상위 변수에 하위 변수를 대입하는 것을 의미한다.
- 마치 상자에 어떤 물건을 넣는것이라고 생각하면 된다.
- 하위 변수(물건)을 담을 상위 변수(상자)에 넣는것
- 보통 상위 변수는 object를 말한다.
int number = 10;
char charValue = 'A';
string textStr = "Hello world!";
//이것이 박싱이다.
object canSaveAll1 = number;
object canSaveAll2 = charValue;
object canSaveAll3 = textStr;
2) 언박싱
- 상위 변수에 대입했던 하위변수를 본래의 자료형으로 되돌리며 꺼내는 것을 의미한다.
- 상위 변수에 있던 하위 변수를 본래의 자료형으로 되돌리기 위해서 타입 캐스팅을 할 때, 언박싱이 일어난다고 표현한다.
int number3 = (int)canSaveAll1;
- 이런식으로 타입캐스팅을 해준다면 넣을 수 있다. 이것이 언박싱이다.
3) 기타
- 박싱, 언박싱은 변수와 관련되어 사용되는 용어이다.
- 언박싱의 형태가 이루어질 경우 부하가 많이 걸리게 되므로 하지 않는것이 좋다.
- 초보 프로그래머에게 중요한 개념이다.
1. 업캐스팅 / 다운캐스팅
1) 업캐스팅
- 자식클래스를 부모클래스로 타입 캐스팅 하는 것을 의미한다.
- 자세히 얘기하면 자식클래스의 인스턴스를 부모클래스의 타입으로 변환하는 것이다.
- 자식클래스의 특정한 멤버나 동작에는 접근할 수 없게됩니다.
class Animal {
public void Eat() {
Console.WriteLine("Animal is eating.");
}
}
class Cat : Animal {
public void Meow() {
Console.WriteLine("Cat says meow.");
}
}
class MainClass {
public static void Main(string[] args) {
Animal animal = new Cat(); // 업캐스팅
animal.Eat(); // Animal is eating.
// animal.Meow(); // 컴파일 에러: Animal에는 Meow() 메서드가 없음
}
}
2) 다운캐스팅
- 부모클래스를 자식클래스로 타입 캐스팅 하는것을 의미한다.
- 업캐스팅된 부모 클래스의 인스턴스를 다시 자식 클래스의 타입으로 변환하는것.
- 다운캐스팅을 할때는 앞서 업캐스팅된 객체가 실제로 해당 자식 클래스의 인스턴스인지 확인이 필요하다.
- 그렇지 않을 경우 InvalidCastException이 발생할 수 있다.
class Animal {
public void Eat() {
Console.WriteLine("Animal is eating.");
}
}
class Cat : Animal {
public void Meow() {
Console.WriteLine("Cat says meow.");
}
}
class MainClass {
public static void Main(string[] args) {
Animal animal = new Cat(); // 업캐스팅
if (animal is Cat) {
Cat cat = (Cat)animal; // 다운캐스팅
cat.Meow(); // Cat says meow.
}
}
}
728x90
'프로그래밍 > C#' 카테고리의 다른 글
VisualStudio C#에서 함수에 설명을 추가하는 방법 (0) | 2023.06.22 |
---|---|
[C#] (글 수정필요) Partial 클래스, Extended 메소드 (0) | 2023.06.21 |
[C#] List<T>를 이용할때, 같은 값이 계속해서 출력되는 이유? (0) | 2023.06.20 |
[C#] 프로퍼티, 왜 사용하는거지? (0) | 2023.06.18 |
foreach 이용 (0) | 2023.06.15 |