c\#Struct 의 문제점 분석
✔️ 만약 유형의 실례 가 매우 작고 보통 수명 이 짧 거나 다른 대상 에 삽입 된다 면,클래스 가 아 닌 구 조 를 정의 하 는 것 을 고려 하 십시오.
❌ 이 유형 이 다음 과 같은 모든 특징 을 가지 지 않 는 한 구 조 를 정의 하지 않 습 니 다.
이것 은 논리 적 으로 하나의 값 을 나타 내 는데 원시 유형(int,double 등)과 유사 하 다.
그것 의 인 스 턴 스 크기 는 16 바이트 보다 낮다.
그것 은 변 할 수 없 는 것 이다.
그것 은 자주 포장 할 필요 가 없다.
소프트웨어 를 개발 할 때 페이지 팝 업 창 이 자주 있 고 홈 페이지 면 에 서 는 창 에 파 라 메 터 를 전달 해 야 합 니 다.창 도 이런 매개 변수 로 다른 데 이 터 를 찾 아 보 거나 데 이 터 를 저장 할 때 만 사용 합 니 다.즉,입력 만 읽 는 것 입 니 다.구조 함수 전 참 을 통 해 여러 개의 매개 변 수 를 전달 할 수 있 지만 보통 여러 개의 매개 변 수 는 하나의 전체 로 봉 하 는 것 이 좋 습 니 다.만약 에 이런 매개 변 수 는 업무 적 으로 작은 논리 단위 로 볼 수 있다 면 Struct 로 봉 하 는 것 이 좋 습 니 다.
eg:함수 전 삼,struct 는 한 번 더 복사 하기 때문에 ref 를 추가 합 니 다.
using System;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
private FundStruct s_fundStruct;
public Form1()
{
InitializeComponent();
}
public Form1(ref FundStruct fundStruct)
{
InitializeComponent();
s_fundStruct = fundStruct;
}
private void Form1_Load(object sender, EventArgs e)
{
this.textBox1.Text = s_fundStruct.Code;
this.textBox2.Text = s_fundStruct.ShortName;
...
}
}
public struct FundStruct
{
/// <summary>
///
/// </summary>
internal readonly string Code;
/// <summary>
///
/// </summary>
internal readonly int Number;
/// <summary>
///
/// </summary>
internal readonly string ShortName;
/// <summary>
///
/// </summary>
internal readonly string LongName;
internal FundStruct(string code, int number, string shortName, string longName)
{
Code = code ?? throw new ArgumentNullException(nameof(code));
Number = number;
ShortName = shortName ?? throw new ArgumentNullException(nameof(shortName));
LongName = longName ?? throw new ArgumentNullException(nameof(longName));
}
}
}
클래스 와 의 차이:C\#에서 구조 유형 과 유형 은 문법 적 으로 매우 비슷 하 다.그들 은 모두 데이터 구조 로 데이터 구성원 과 방법 구성원 을 포함 할 수 있다.
구조 와 유형의 차이:
1.구 조 는 값 유형 으로 스 택 에서 공간 을 분배 합 니 다.클래스 는 인용 형식 으로 더미 에 공간 을 분배 하고 창고 에 저 장 된 것 은 인용 일 뿐 입 니 다.
2.구조 유형 은 구성원 의 데 이 터 를 직접 저장 하고 다른 유형의 데 이 터 를 더미 에 있 게 하 며 스 택 에 있 는 변 수 는 더미 에 있 는 데이터 대상 을 가리 키 는 참조 입 니 다.
C\#의 간단 한 유형,예 를 들 어 int,double,bool 등 은 모두 구조 유형 이다.필요 하 다 면 구조 형식 을 연산 자 와 결합 하여 다시 불 러 오고 C\#언어 에 새로운 값 형식 을 만 들 수도 있 습 니 다.
구 조 는 값 유형 이 고 데 이 터 를 직접 저장 하기 때문에 한 대상 의 주요 구성원 이 데이터 이 고 데이터 양 이 많 지 않 은 상황 에서 구 조 를 사용 하면 더욱 좋 은 성능 을 가 져 올 수 있다.
구 조 는 값 형식 이기 때문에 구조 에 메모 리 를 분배 하거나 구조 가 역할 영역 을 초과 하여 삭 제 될 때 성능 이 매우 좋 습 니 다.내부 연결 이나 스 택 에 저장 하기 때 문 입 니 다.한 구조 유형의 변 수 를 다른 구조 에 할당 할 때 성능 에 대한 영향 은 구조의 크기 에 달 려 있다.만약 에 구조의 데이터 구성원 이 매우 많 고 복잡 하면 손실 을 초래 할 수 있다.그 다음 에 코드 를 사용 하여 이 문 제 를 설명 한다.
구조 와 유형의 적용 장소 분석:
1.스 택 의 공간 이 유한 하고 대량의 논리 적 대상 이 있 을 때 생 성 류 는 생 성 구조 보다 좋 습 니 다.
2.점,사각형,색상 과 같은 경 량 대상 에 대해 여러 색상 대상 을 포함 하 는 배열 을 설명 하려 면 CLR 은 모든 대상 에 게 메모 리 를 분배 해 야 합 니 다.이런 상황 에서 구 조 를 사용 하 는 비용 이 비교적 낮 습 니 다.
3.추상 적 이 고 다단 계 적 인 대상 차원 을 표현 할 때 유형 은 가장 좋 은 선택 이다.구조 가 계승 을 지원 하지 않 기 때문이다.
4.대부분 상황 에서 목표 유형 은 일부 데 이 터 를 포함 하거나 데 이 터 를 위주 로 한다.
이상 은 c\#Struct 의 일부 문제 분석의 상세 한 내용 입 니 다.c\#Struct 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.