[c \ # 20 문] 1. 클 라 스 와 struct 를 언제 사용 합 니까?
5628 단어 struct
struct 는 데이터 와 함 수 를 포함 할 수 있 는 값 형식 입 니 다.
struct 는 값 형식 이 므 로 쌓 지 않 고 스 택 (stack) 에 공간 을 할당 합 니 다.
struct 는 데 이 터 를 struct 에 직접 존재 하고 class 는 인용 형식의 지침 만 저장 합 니 다.
struct 는 작은 데이터 구조 에 적용 된다.
struct 는 성능 에 영향 을 줄 수 있 습 니 다.
struct 는 new 작업 을 사용 하여 구조 기 를 호출 할 수 있 지만 힙 에 메모 리 를 할당 하지 않 습 니 다.
struct 의 구조 기 는 struct 의 값 자체 만 되 돌려 줍 니 다 (보통 stack 에 분 배 됩 니 다)
class 를 사용 할 때 여러 변 수 는 같은 대상 을 참조 할 수 있 습 니 다.
sturct 를 사용 하여 모든 변 수 는 자신의 데이터 복사 본 을 저장 하고 서로 영향 을 주지 않 습 니 다.
struct 는 계승 을 지원 하지 않 습 니 다. sturct 는 object 형식 에서 계승 합 니 다.
DEMO
class Program
{
class PointClass
{
public int x;
public int y;
public PointClass(int x, int y)
{
this.x = x;
this.y = y;
}
}
struct PointStruct
{
public int x;
public int y;
public PointStruct(int x, int y)
{
this.x = x;
this.y = y;
}
}
static void Main(string[] args)
{
PointStruct pointStruct = new PointStruct(10, 10);
Console.WriteLine("Initial struct values are {0},{1}", pointStruct.x, pointStruct.y);
ModifyStructPoint(pointStruct);
Console.WriteLine("After ModifyStructPoint, struct values are {0},{1}", pointStruct.x, pointStruct.y);
Console.WriteLine();
PointClass pointClass = new PointClass(10, 10);
Console.WriteLine("Initial Class values are {0},{1}", pointClass.x, pointClass.y);
ModifyClassPoint(pointClass);
Console.WriteLine("After ModifyClassPoint, class values are {0},{1}", pointClass.x, pointClass.y);
Console.ReadLine();
}
private static void ModifyStructPoint(PointStruct pointStruct)
{
pointStruct.x = 20;
pointStruct.y = 20;
Console.WriteLine("Modified Valuesare {0},{1}", pointStruct.x, pointStruct.y);
}
private static void ModifyClassPoint(PointClass pointClass)
{
pointClass.x = 20;
pointClass.y = 20;
Console.WriteLine("Modified Valuesare {0},{1}", pointClass.x, pointClass.y);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ruby의 구조체 클래스은 접근자 메서드가 있는 속성 모음입니다. 클래스를 명시적으로 작성할 필요 없이. Struct 클래스는 구성원 및 해당 값 집합을 포함하는 새 하위 클래스를 생성합니다. 각 멤버에 대해 #attr_accessor 와...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.