C \ # 구조 체 struct 와 클래스 의 차이
구조 와 유형의 차이:
4. 567917. 구 조 는 값 유형 으로 스 택 에서 공간 을 분배 합 니 다.클래스 는 인용 형식 입 니 다. 더미 에 공간 을 분배 하고 창고 에 저 장 된 것 은 인용 일 뿐 입 니 다
4. 567917. 구조 유형 은 구성원 의 데 이 터 를 직접 저장 합 니 다.클래스 의 데 이 터 는 쌍 에 있 고 스 택 에 있 는 변 수 는 더미 에 있 는 데이터 대상 을 가리 키 는 참조 입 니 다
C \ # 의 간단 한 유형, 예 를 들 어 int, double, bool 등 은 모두 구조 유형 이다.필요 하 다 면 구조 형식 을 연산 자 와 결합 하여 다시 불 러 오고 C \ # 언어 에 새로운 값 형식 을 만 들 수도 있 습 니 다.
구 조 는 값 유형 이 고 데 이 터 를 직접 저장 하기 때문에 한 대상 의 주요 구성원 이 데이터 이 고 데이터 양 이 많 지 않 은 상황 에서 구 조 를 사용 하면 더욱 좋 은 성능 을 가 져 올 수 있다.
public struct AddressBook
{
// 、 、 、
}
클래스 에 있어 두 변수 가 같은 대상 을 가리 키 는 상황 은 존재 하기 때문에 이러한 두 변수 중 하 나 를 조작 하면 결 과 는 반드시 다른 대상 에 영향 을 줄 것 이다. 왜냐하면 그들 이 가리 키 는 것 은 같은 대상 이기 때문이다.
구 조 는 값 유형 으로 자신의 데 이 터 를 직접 포함 하고 모든 구 조 는 자신의 데 이 터 를 저장 하 며 모든 구 조 를 수정 하 는 데 이 터 는 다른 구조의 데이터 에 영향 을 주지 않 습 니 다
public class Program
{
static void Main(string[] args)
{
PersonStruct p1, p2; // , new
p1.Name = " ";
p1.MobilePhone = "13553663108";
p1.Birthday = DateTime.Now.AddYears(-10);
p2 = p1; // p1 p2 // , p2
p2.Name = " "; // p2 p1
Console.WriteLine(p1.Name); //
PersonClass p3 = new PersonClass();
p3.Name = " ";
p3.MobilePhone = "13553663108";
p3.Birthday = DateTime.Now.AddYears(-10);
PersonClass p4 = new PersonClass();
p4 = p3; // p3 p4 , , ( )
p4.Name = " "; // p4 p3
Console.WriteLine(p3.Name); //
Console.ReadKey();
}
}
public class PersonClass
{
public string Name;
public string MobilePhone;
public DateTime Birthday;
}
public struct PersonStruct
{
public string Name;
public string MobilePhone;
public DateTime Birthday;
}
하나의 구조 변 수 를 다른 구조 변수 에 할당 하 는 것 은 데 이 터 를 한 구조 에서 다른 구조 로 복사 하 는 것 이다.클래스 는 다르다. 클래스 의 변수 사이 에서 복 사 된 것 은 클래스 데이터 가 아니 라 인용 이다.따라서 데이터 가 비교적 클 때 이런 데이터 복제 메커니즘 은 비교적 큰 비용 을 가 져 올 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.