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

1.데이터 형식 과 변수의 소개
프로그램 이 실행 되 는 과정 에서 컴퓨터 는 대량의 상태 데 이 터 를 기록 해 야 한다.그럼 이 데 이 터 는 모두 어디 에 저장 합 니까?프로그램 이 실행 중인 데 이 터 는 일반적으로 메모리 에 저 장 됩 니 다.그러면 그들 이 메모리 에 어떻게 저장 하 는 지 에 대한 설명 은 바로 데이터 형식 이다.변 수 는 데이터 형식의 실체 입 니 다.그러면 우 리 는 하나의 예 를 살 펴 보 겠 습 니 다.만약 에 지금 프로그램 을 설계 하여 정수 10 과 20 의 합 을 계산 해 야 한다 면 다음 과 같은 코드 를 보 세 요.

using System; 
   
namespace MyProgram 
{ 
  class Program 
  { 
    static void Main(string[] args) 
    { 
      //       : 
      //                 
      int a = 10; //            a    10 
      int b = 20; //            b    20 
   
      int c = a + b;//           b     a + b    
         
      Console.WriteLine("10 + 20 = "+c.ToString());//     
    } 
  } 
}
분석:먼저 정수 10 과 20 의 합 을 계산 하려 면(메모리 에 저장)놓 을 곳 이 있어 야 합 니 다.정 수 를 계산 한 이상 우 리 는 정수 데이터 형식 int 로 a 와 b 의 변 수 를 정의 하여 각각 10 과 20 을 저장 하고 덧셈 연산 자 를 통 해 변수 c 에 저장 합 니 다.이전에 알 고 있 던 콘 솔 클래스 를 호출 하여 결 과 를 콘 솔 에 출력 합 니 다.여기 서 c.ToString()을 주의해 야 합 니 다.정 수 를 계산 하고 사용 하 는 변수의 유형 은 정수 이 며 콘 솔 에서 출력 하 는 것 은 문자열 이기 때문에 int 형식의 행동 ToString()을 호출 하여 문자열 형식 으로 변환 해 야 합 니 다!이 부분 은 데이터 형식의 세 번 째 편 에서 소개 합 니 다!
2.C\#기본 데이터 형식 과 변수
1.데이터 형식
C\#의 데이터 형식 은 두 가지 로 나 뉜 다.하 나 는 값 형식 이 고 하 나 는 인용 형식 이다.(값 유형 과 인용 유형 은 데이터 형식의 두 번 째 편 에서 소개 할 것 이다)그러면 C\#의 상용 데이터 형식 을 살 펴 보 자.
 
2.익명 형식
C\#자주 사용 하 는 기본 데이터 형식 을 알 고 익명 유형,익명 유형 이 무엇 인지 살 펴 보 겠 습 니 다.
익명 형식:익명 형식 은 변수 가 초기 화 된 후에 주어진 값 에 따라 어떤 유형 에 속 하 는 지 판단 하 는 것 입 니 다.모 르 겠 어 요.괜찮아 요.예 를 들 면:

using System; 
   
namespace MyProgram 
{ 
  class Program 
  { 
    static void Main(string[] args) 
    { 
      int a = 20; //            
      char b = 'A';//            
   
      var _intType = 20; //                      20 
      var _charType = 'A'; //                    A 
   
      Console.WriteLine(" a       :{0}",a.GetType().ToString()); //     a      
      Console.WriteLine(" b       :{0}", b.GetType().ToString()); //     b      
   
      Console.WriteLine(" _intType       :{0}", _intType.GetType().ToString());//     _intType      
      Console.WriteLine(" _charType       :{0}", _charType.GetType().ToString());//     _charType      
    } 
  } 
}
먼저 9~10 줄 을 보고 정수 형식의 변수 a 대 입 이 20 이 고 문자 형식의 변수 b 를 대 입 이 A 로 정 의 했 습 니 다.그러면 a 와 b 의 데이터 형식 은 각각 정수 형식(System.Int 32 와 System.Char)입 니 다.
이어서 12~13 줄 을 보고 두 개의 익명 유형의 변 수 를 다음 과 같이 정의 했다.intType,_charType,각각intType 에 정수 값 을 20 으로 부여 하여charType 은 A 라 는 문 자 를 부 여 했 습 니 다.프로그램 이 실행 되 기 전에 컴 파일 러 는 변수 가 부여 한 값 을 근절 하여 데이터 형식 을 자동 으로 판단 합 니 다.
프로그램 실행 결 과 는 다음 과 같 습 니 다.

알림:익명 형식 변 수 는 컴 파일 후 데이터 형식 을 확인 한 후 프로그램 역할 영역 에서 이 변수의 데이터 형식 을 변경 할 수 없습니다!
3.변수 와 변수의 역할 영역
변수:위의 예 와 소 개 를 통 해 변수 가 낯 설 지 않 을 것 입 니 다.변 수 는 데이터 형식의 인 스 턴 스 입 니 다.데 이 터 를 저장 할 메모리 공간 이나 데이터 메모리 공간 주 소 를 저장 합 니 다.
역할 영역:역할 영역 은 프로그램 이 이 변 수 를 사용 하 는 범위 입 니 다.일반 변수 역할 필드 의 경 계 는 기호{와}에 의 해 경 계 를 긋 는 것 입 니 다.즉,{}에서 정 의 된 변 수 는{}내부 에서 만 호출 할 수 있 습 니 다.
C\#의 역할 영역 은 두 가지 단계 로 나 눌 수 있 습 니 다.
1.클래스 속성 단계:변수 가 클래스 로 정의 되 는 속성 은 변수의 역할 영역 이 전체 클래스 의 내부 에 접근 할 수 있 습 니 다.
2.부분 단계:변수 가 방법 이나 구문 블록 에 정의 되면 변수의 역할 도 메 인 은 가장 가 까 운{}사이 에 접근 할 수 있 고 부분 적 인 변 수 는 초기 화 되 어야 합 니 다.
질문
1.클래스 가 정의 하 는 변수(속성)와 이 방법 에서 정의 하 는 부분 변수 가 이름 을 바 꿀 때 어떻게 됩 니까?
답:현재 역할 영역 에서 의 변수 와 상급 역할 영역 에서 의 변수 가 이름 을 바 꿀 때 현재 역할 영역 에서 의 변 수 를 기준 으로 합 니 다.
2.클래스 가 정의 하 는 변수(속성)의 이름 을 바 꾸 거나 클래스 방법 에서 정의 하 는 부분 변수 가 이름 을 바 꿀 때 어떻게 됩 니까?
답:같은 역할 을 하 는 변 수 는 같은 이름 의 변 수 를 나 타 낼 수 없습니다.
참조 코드:

class MyClass 
{ 
  int a = 10; 
   
  public void MyMethod() 
  { 
    int a = 20; //             a     ,       (        ) 
    Console.WriteLine("a:{0}",a); //     20 
   
    int a = 30; //     ,                    
  } 
}
3.데이터 형식 기본 값 과 초기 화
C\#클래스 정의 속성 을 초기 화하 지 않 아 도 됩 니 다.그들의 값 은 각각 무엇 입 니까?할당 되 지 않 은 변 수 는 자동 으로 적당 한 기본 값 을 부여 합 니 다.
예 를 들 면:
int 형식(수치 형식)기본 값 은 0 입 니 다.
bool 형식 기본 값 은 false 입 니 다.
char 형식 기본 값 은'\0'입 니 다.
우 리 는 클래스 속성 을 정의 할 수 있 습 니 다.그들의 값 을 초기 화 할 수도 있 고,클래스 의 구조 함 수 를 통 해 클래스 속성 을 초기 화 할 수도 있 습 니 다.

class MyClass 
{ 
  public int a = 10; //                
  public bool b; //    false 
  public MyClass(bool c) 
  { 
    b = c; //             
  } 
} 
   
class Program 
{ 
  static void Main(string[] args) 
  { 
    MyClass mc = new MyClass(true);//        true     bool    c = true 
    Console.WriteLine("mc->a :{0}", mc.a.ToString()); 
    Console.WriteLine("mc->b :{0}",mc.b.ToString()); 
  } 
}
출력 결 과 는 다음 과 같 습 니 다.

정적 변수
정적 변 수 는 클래스 단 계 를 통 해 호출 되 며,형식의 대상 을 만 들 지 않 아 도 사용 할 수 있 는 변수 입 니 다.
정적 변수 키워드:static
정의 형식:[static 데이터 형식 변수 이름]
인 스 턴 스 코드:

using System; 
   
namespace MyProgram 
{ 
  class MyClass 
  { 
    public int a = 10; //  a        
    public static int b = 20; //  b       
  } 
   
  class Program 
  { 
    static void Main(string[] args) 
    { 
      MyClass mc = new MyClass(); 
      int a_Mc = mc.a; //          MC   MC(  )    
   
      int b_MyClass = MyClass.b; //                   
   
      Console.WriteLine("mc->a :{0}", a_Mc); 
      Console.WriteLine("MyClass->b :{0}", b_MyClass); 
    } 
  } 
}
실행 결 과 는 다음 과 같 습 니 다.

상수
상수 란 바 꿀 수 없 는 변수 입 니 다.상수 는 클래스 속성 단계 에 만 정의 할 수 있 고 상수 도 정적 이 어야 합 니 다.또한 정의 할 때 할당 을 초기 화 합 니 다.상수 가 초기 화 되면 바 꿀 수 없습니다.상수 변경 문 구 는 컴 파일 러 오 류 를 일 으 킬 수 있 습 니 다.상수 정의 시 값 을 부여 해 야 하기 때문에 상수 형식 은 값 형식(값 형식 과 참조 형식 다음 설명)만 설명 할 수 있 습 니 다.
상수 정의 형식:[const 데이터 형식 변수 이름]
코드:

using System; 
   
namespace MyProgram 
{ 
  class MyClass 
  { 
    public const int a = 10; //    a 
    public const bool b = false; //    b 
  } 
   
  class Program 
  { 
    static void Main(string[] args) 
    { 
      int a_Const_MyClass = MyClass.a; //        ,       
   
      bool b_Const_MyClass = MyClass.b; //        ,       
   
      Console.WriteLine("MyClass->a_Const :{0}", a_Const_MyClass.ToString()); 
      Console.WriteLine("MyClass->b_Const :{0}", b_Const_MyClass.ToString()); 
   
      //                    
      MyClass.a = 20;  
      MyClass.b = true; 
    } 
  } 
}
실행 결 과 는 다음 과 같 습 니 다.

상수 알림 수정 오 류 는 다음 과 같 습 니 다.

6.읽 기 전용 과 정적 읽 기 전용
상수 가 성명 할 때 할당 을 초기 화해 야 한 다 는 것 을 돌 이 켜 보면 실행 할 때 할당 하려 면 어떻게 해 야 합 니까?그러면 C\#를 두려워 하지 않 고 읽 기 전용 키 워드 를 제공 합 니 다.readonly,읽 기 전용 형식 이 상수 와 유사 한 것 도 할당 후 바 꿀 수 없 지만 상수 와 달리 강제 정적 인 것 이 아 닙 니 다.즉,읽 기 전용 유형 은 대상 등급 으로 접근 합 니 다.
읽 기 전용 형식 정의 방식:[readonly 데이터 형식 변수 이름]
그러면 어떻게 그 를 정적 으로 만 듭 니까?간단 합 니 다.앞에서 정적 키워드 static 을 소 개 했 습 니 다.
정적 읽 기 전용 형식 정의 방식:[static readonly  데이터 형식 변수 이름]
코드:

using System; 
   
namespace MyProgram 
{ 
  class MyClass 
  { 
    public readonly int a = 10; //      a 
    public static readonly bool b = false; //        b 
  } 
   
  class Program 
  { 
    static void Main(string[] args) 
    { 
      MyClass mc = new MyClass(); 
      int a_ReadOnly_MC = mc.a; //         ,        
   
      bool b_StaticReadOnly_MyClass = MyClass.b; //            ,      
   
      Console.WriteLine("a_ReadOnly_MC : {0}",a_ReadOnly_MC); 
      Console.WriteLine("b_StaticReadOnly_MyClass :{1}", b_StaticReadOnly_MyClass); 
   
      //                   
      mc.a = 20; 
      MyClass.b = true; 
    } 
  } 
}
실행 결 과 는 다음 과 같 습 니 다.

읽 기 전용 변수 오 류 를 다음 과 같이 수정 합 니 다.

7.주의해 야 할 세부 사항
1.변수 역할 영역 에 같은 변수 이름 이 나타 날 수 있 습 니까?
답:같은 역할 도 메 인 일 때 변 수 는 이름 을 바 꿀 수 없습니다.현재 역할 도 메 인과 상급 역할 도 메 인의 변 수 는 이름 을 바 꿀 때 변수 가 있 는 역할 도 메 인 을 위주 로 합 니 다.
2.상수 가 대상 단계 에서 접근 할 수 있 습 니까?
답:상 수 는 대상 단계 에서 접근 할 수 없습니다.상 수 는 기본적으로 정적 이 고 클래스 단계 에서 접근 합 니 다.
3.상수(const)와(readonly)만 읽 는 차이 점 은?
답:공통점:모두 할당 후 바 꿀 수 없습니다.
다른 점:
1.Const 는 성명 할 때 값 을 부여 해 야 합 니 다.readonly 는 초기 화 과정 에서 값 을 부여 할 수 있 습 니 다.
2.Const 는 값 형식 만 수식 할 수 있 고 readonly 는 임의의 형식 을 수식 할 수 있 습 니 다.
3.Const 는 클래스 접근 이 고 readonly 는 대상 단계 접근 입 니 다.
이상 설명 한 클래스 의 속성 은 모두 구성원 변 수 를 대표 하 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.이후 에 도 관련 글 이 계속 업데이트 되 고 있 으 니 계속 지 켜 봐 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기