C\#프로 그래 밍 독학 데이터 형식 과 변수 2

우 리 는 계속 C\#프로 그래 밍 강 좌 를 독학 하고 지난 시간 에 C\#의 기본 데이터 유형 과 변 수 를 소 개 했 습 니 다.오늘 이 시간 에 우 리 는 값 유형 과 인용 유형 을 소개 합 니 다!
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);
  
  }
}
실행 결 과 는 다음 과 같 습 니 다.

이번 수업 의 내용 은 여기까지 만 설명 하 겠 습 니 다.여러분 들 은 우리 의 교과 과정 에 계속 관심 을 가 져 주 십시오.

좋은 웹페이지 즐겨찾기