C\#프로 그래 밍 독학 데이터 형식 과 변수 2
1.값 형식 과 인용 유형 은 무엇 입 니까?
C\#대부분의 대상 언어 데이터 형식 과 마찬가지 로 값 형식 과 인용 유형 두 가지 로 나 눌 수 있 습 니까?어떻게 이 두 가지 유형 을 구분 합 니까?그림:
유형 구조 도 에 따라 우 리 는 다음 과 같은 것 을 얻 을 수 있다.
1.값 형식 은 내 장 된 데이터 형식(int double float)사용자 정의 값 형식(struct 구조 체)매 거 진(emun)을 포함 합 니 다.
2.인용 유형 은 인터페이스 유형 유형 등 을 포함한다.
이러한 유형 이 값 유형 에 속 하 는 것 과 그 유형 이 인용 유형 에 속 하 는 것 을 알 게 된 후에 우 리 는 값 유형 과 인용 유형의 차이 점 이 각각 무엇 인지 분석 해 보 자.
먼저 그림 을 계속 봅 니 다.
위의 그림 에서 알 수 있 듯 이 우리 컴퓨터 메모 리 는 더미(.NET 중 위탁 관리 더미)와 스 택 두 구역 으로 나 눌 수 있 습 니 다!이 를 이해 한 후에 우 리 는 값 유형 과 인용 유형의 차 이 를 보 았 다.
1.값 유형:int double float 등 기본 데이터 형식,실제 값 은 스 택 에 분 배 됩 니 다!
2.참조 형식:object 등 데이터 형식 을 참조 합 니 다.실제 값 은 쌓 여 있 고 스 택 에 값 을 저장 하 는 주 소 를 저장 합 니 다.
위의 그림 코드:
//스 택 에 10 개의 공간 을 할당 합 니 다.
int a = 10;
//더미 에 공간 저장 변수 a 의 값 10 을 할당 하고 스 택 에 이 값 을 더미 에 저장 할 공간 을 할당 합 니 다.
object o = a;
기본 값 유형 과 인용 유형의 개념 을 잘 이해 한 후에 우 리 는 그들의 본질 을 깊이 분석 할 것 이다.
2.값 유형 과 인용 유형 에 대한 분석
1.값 종류
값 유형 은 스 택 에 분 배 됩 니 다.스 택 의 원리 에 따라 값 유형 은 현재 프로그램의 역할 영역 에서 벗 어 나 면 바로 삭 제 됩 니 다!그러면 제 가 같은 값 유형 두 개 를 정의 하면 어떻게 될까요?다음 코드 를 보십시오.
static void main()
{
//이 때 스 택 에 10 개의 공간 을 할당 합 니 다.
int a = 10;
//스 택 에 a 의 값 10 을 저장 할 공간 을 계속 할당 합 니 다.
int b = a;
//b 가 저장 한 공간의 10 을 20 으로 변경 합 니 다.
//이 때 는 영향 을 주지 않 는 다.왜냐하면 그들 두 사람 은 각자 독립 된 공간 이 있 기 때문이다.
b = 20;
//a 와 b 의 값 을 인쇄 합 니 다.
Console.WriteLine(" a = {0}",a.ToString());
Console.WriteLine(" b = {0}",b.ToString());
}//역할 영역 에서 a 와 b 가 할당 한 주소 공간 을 삭제 합 니 다.
실행 결과:
2.인용 형식
참조 형식의 실제 값 을 더미 에 저장 하고 스 택 에서 공간 을 분배 하 는 주소 입 니 다.그렇다면 인용 유형 이 대상 의 역할 영역 에서 벗 어 나 면 어떻게 됩 니까?다음 코드 참조:
class MyClass
{
public int a;
}
class Program
{
static void Main(string[] args)
{
// 10, 10
MyClass mc1 = new MyClass();
mc1.a = 10;
// 20, 20
MyClass mc2 = new MyClass();
mc2.a = 20;
// a b
// b a
// b 20
mc1 = mc2;
// a b 30
mc2.a = 30;
//
Console.WriteLine(" mc1.a = {0}", mc1.a);
Console.WriteLine(" mc2.a = {0}", mc2.a);
}
}
실행 결 과 는 다음 과 같 습 니 다.이번 수업 의 내용 은 여기까지 만 설명 하 겠 습 니 다.여러분 들 은 우리 의 교과 과정 에 계속 관심 을 가 져 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.