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
반응형
'Program Language > C#' 카테고리의 다른 글
[C#] out 매개 변수 한정자 (0) | 2023.02.16 |
---|---|
[C#] Generic Array (0) | 2023.02.16 |
[C#] abstract class (0) | 2023.02.16 |
[C#] OCX에 포인터 데이터 넘기기 (0) | 2022.10.26 |
[C#] C++로 만들어진 OCX 사용하기 (0) | 2022.10.26 |