클래스와 구조체는 C#에서 데이터를 표현할 때 자주 사용되는 기본적인 자료형이다.
둘은 매우 비슷해 보이지만, 메모리 할당과 동작 방식에서 차이를 가진다.
간단하게 둘의 차이와 언제 사용하는지 알아보도록 하자
힙과 스택의 특징에 대해 간단하게 정리 해보면
스택(Stack)
힙(Heap)
여기서 알 수 있는것은 클래스는 상대적으로 느리더라도 유연성과 크고 복잡한 데이터 구조에 적합하고, 구조체는 빠르고 작고 간단한 데이터 구조에 적합한 것을 알 수 있다.
class Person
{
public string Name;
}
Person person1 = new Person();
person1.Name = "철수";
Person person2 = person1;
person2.Name = "영희";
Console.WriteLine(person1.Name); // 결과 : "영희"
struct Person
{
public string Name;
}
Person person1 = new Person();
person1.Name = "철수";
Person person2 = person1;
person2.Name = "영희";
Console.WriteLine(person1.Name); // 결과 : "철수"
위의 예시를 봤을때 클래스와 구조체 선언만 다르고, 나머지 코드는 거의 동일해 보이는데 실행 결과는 다르다.
그 이유는 다음과 같다
쉽게 생각하면 클래스는 객체의 주소를 공유해 변수끼리 연결되어 있다고 한다면, 구조체는 변수의 새로운 복사본이 생긴다고 생각하면 좋을 것 같다.
C#에서 클래스와 구조체는 비슷해 보이지만 메모리 할당, 동작 방식과 사용성 등 여러가지 다른 부분이 있고, 상황에 맞게 올바른 자료형을 선택하면 성능 향상과 유지보수성 개선에 큰 도움이 될 것 같다.