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으로 할당된다고 하니, 그냥 간단한 형태의 구조라면 구조체를 사용하는 게 좋을 것 같기도 하다.

Application.zip
0.01MB

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