이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 22710|회답: 0

[출처] C#에서 struct와 class의 차이점

[링크 복사]
게시됨 2016. 6. 24. 오전 11:53:06 | | |
클래스와 struct의 가장 본질적인 차이점은 클래스가 참조 타입이고 struct는 값 타입이며, 메모리 내 할당이 다르다는 점입니다.

계급이란 무엇인가?

클래스는 객체지향 프로그래밍에서 기본적인 개념으로, 일반적으로 필드, 속성, 메서드, 속성, 구성자, 인덱서, 연산자 등을 포함하는 맞춤형 자료구조의 한 종류입니다. .NET에서는 모든 클래스가 궁극적으로 System.Object 클래스에서 상속받기 때문에, 참조 타입이 됩니다. 즉, 클래스의 인스턴스를 새로 만들면 관리 힙 내 그 인스턴스의 주소가 스택에 저장되고, 인스턴스의 값이 관리 힙에 저장됩니다.

구조체란 무엇인가요?

구조체는 관련 변수들의 집합을 하나의 변수 엔티티로 조직하는 데 사용되는 값 유형입니다. 모든 구조체는 System.ValueType 클래스에서 상속받아 값 유형입니다. 즉, 구조체 인스턴스는 스레드가 할당된 스택에서 생성되며, 값 자체를 저장합니다. 따라서 struct를 사용할 때는 int와 char 같은 기본 타입 클래스로 처리할 수 있습니다.



1. 클래스는 참조 타입이고, structs는 값 타입입니다

클래스는 참조 타입이므로 클래스는 null로 설정할 수 있습니다. 하지만 struct는 값 타입이기 때문에 null로 만들 수 없습니다.




2. 클래스를 인스턴스화하면 힙 위에 생성됩니다. 그리고 구조체를 인스턴스화하는데, 이 구조체는 스택 위에 생성됩니다

3. 클래스 인스턴스에 대한 참조를 사용하고 있습니다. 그리고 구조체에 대한 참조를 사용하지 않고 있습니다. (대신 직접 사용하세요)

4. 메서드에 대해 클래스를 인자로 전달할 때, 참조를 전달합니다. struct는 참조가 아니라 값을 전달합니다.

5. 구조체는 초기화자를 가질 수 없지만, 클래스는 초기화자를 가질 수 있습니다.





6. 클래스는 명확한 매개변수 없는 구성자를 가질 수 있지만, 구조체는 가질 수 없습니다





7. 새 키워드는 클래스를 사용하기 전에 인스턴스화되어야 하며, 구조체는 이를 필요로 하지 않습니다




8. 클래스는 상속과 다형성을 지원하지만, Struct는 그렇지 않습니다. 참고: 하지만 Struct는 클래스처럼 인터페이스를 구현할 수 있습니다

9. Struct는 상속을 지원하지 않으므로, 그 구성원들은 보호되거나 보호된 내부로 수정할 수 없습니다

10. 클래스의 생성자는 모든 필드를 초기화할 필요가 없으며, Struct의 생성자는 모든 필드를 초기화해야 합니다







11. 클래스는 디스트럭터를 정의할 수 있지만, 스트럭처는 정의할 수 없다

12. 클래스는 크고 복잡한 데이터에 적합하며, Struct는 종종 일부 데이터의 조합으로 사용되는 새로운 타입에 적합합니다.



적용 가능한 경우: Struct는 성능 측면에서 이점이 있고, Class는 객체지향 확장 측면에서 장점이 있습니다.

기본 데이터 저장소에 사용되는 타입은 Struct 타입으로, 애플리케이션 동작을 정의하는 타입은 Class로 설계됩니다. 이 유형의 향후 적용이 확실하지 않다면 Class를 사용하는 것이 좋습니다.




이전의:알리페이 RSA 개인 키 및 공개 키 원클릭 생성 도구
다음:C#에서 MySQL 도움말 클래스를 역변환하고 저장하세요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com