C#의 구조체(structure)와 클래스(class)
c언어에서 많이 활용되는 구조체는 c#에서도 사용이 가능합니다. 형태상으로 보면 구조체와 클래스는 다르지 않습니다. 다만 구조체는 객체 지향성 특성이 없기 때문에 상속 권한이 없습니다. 그래도 아주 단순한 형태로 데이터 묶음을 만들어서 함수의 파라미터로 사용할 수 있어 편리합니다.
구조체의 구조
c#에서 구조체는 멤버를 초기화하는 함수, 멤버를 내보내거나 할당하는 함수 등을 함께 포함할 수 있습니다. 물론 연산도 가능합니다. 아래의 예는 실제 신호처리의 다이내믹 처리를 위해 사용되는 파라미터를 구초체 묶으로 만들어 사용하는 내용입니다.
이 중에서 Data_Set()는 구조체의 모는 멤버를 할당해 줍니다. 기타 함수들은 멤버 값을 반환해 줍니다.
public struct Comp_Struct {
private float thd;
private int ratio;
private float rms;
private float hold;
private float decay;
private float postgain;
private BYPASS_STATE bypass;
public void Data_Set(float Thd,int Ratio,float RMS,float Hold,float Decay,float Postgain,BYPASS_STATE bypass) {
this.thd = Thd; this.ratio = Ratio; this.rms = RMS;
this.hold = Hold; this.decay = Decay; this.postgain = Postgain;
this.bypass = BYPASS_STATE.off;
}
public float Threshold_Get() { return this.thd; }
public int Ratio_Get() { return this.ratio; }
public float RMS_Get() { return this.rms; }
public float Hold_Get() { return this.hold; }
public float Decay_Get() { return this.decay; }
public float Postgain_Get() { return this.postgain; }
public BYPASS_STATE Bypass_Get() { return this.bypass; }
public void Threshold_Set(float Thd) {this.thd=Thd; }
public void Ratio_Set(int Ratio) { this.ratio=Ratio; }
public void RMS_Set(float RMS) {this.rms=RMS; }
public void Hold_Set(float Hold) { this.hold=Hold; }
public void Decay_Set(float Decay) { this.decay=Decay; }
public void Postgain_Set(float Postgain) {this.postgain=Postgain; }
public void Bypass_Set(BYPASS_STATE state) { this.bypass = state; }
};
내용상으로 보면 클래스와 다르지 않습니다. 그러나 구조체는 스택 메모리를 사용하기 때문에 힙 메모리를 사용하는 크래스보다 동작 속도를 빠르게 만들 수 있습니다.
광고좀 꾹 눌러주시면 고맙겠습니다.
위의 내용을 참조용으로만 사용해주세요. 무단 도용이나 무단 복제는 불허합니다.
기타 문의 사항은 gigasound@naver.com에 남겨 주시면 고맙겠습니다.
'C#, MONO' 카테고리의 다른 글
c# 프로세스 동작시간 측정 (0) | 2021.11.12 |
---|---|
c# 다항식 연산 (0) | 2021.10.08 |
c#의 배열과 리스트 (0) | 2021.10.06 |
c#의 Enum 멤버의 정보 추출 (0) | 2021.10.06 |
테이블 컬럼 조작 (0) | 2021.08.21 |