Program Language/C#
[C#] 구조체와 클래스
야곰야곰+책벌레
2023. 2. 16. 09:36
728x90
반응형
C#에서 클래스와 구조체는 C++ 에서처럼 큰 차이는 없다.
C++에서 구조체는 기본적으로 public 클래스는 기본적으로 private이라는 것을 제외하면 그냥 동일하다고 생각하고 쓰는 편인데, C#은 그마저도 없어 보인다.
// 구조체
public struct Person
{
public string Name;
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
// 클래스
public class PersonClass
{
public string Name { get; set; }
public int Age { get; set; }
public PersonClass(string name, int age)
{
Name = name;
Age = age;
}
}
구조체는 상속이 불가능하다는 점과, 클래스는 heap 스택은 stack에 할당된다는 점 (나도 처음 알게 됨)이 다르다.
두 번째 이유 때문에 성능에 영향일 끼치고 그래서 여전히 분리해 놓은 것 같다.
스택은 카비지컬랙션에 관리되지 않기에 성능상 가지는 장점이 있다. 하지만 구조체의 경우에도 16byte가 넘으면 heap으로 할당된다고 하니, 그냥 간단한 형태의 구조라면 구조체를 사용하는 게 좋을 것 같기도 하다.
728x90
반응형