C\#데이터 형식 및 변환 에 대한 자세 한 설명

머리말
C\#에서 데이터 형식 은 다음 과 같은 몇 가지 유형 으로 나 눌 수 있 습 니 다.
값 종류(Value types)참조 종류(Reference types)포인터 종류(Pointer types)
그 중에서 포인터 유형 은 안전 하지 않 은 코드 에서 만 사용 되 기 때문에 오늘 은 토론 하지 않 습 니 다.우 리 는 주로 인용 유형 과 값 유형 을 연구한다.
기본 정의
값 형식의 변 수 는 성명 후 시스템 이 직접 위탁 관리 창고 에서 메모 리 를 분배 하고 데 이 터 를 저장 합 니 다.그 중에서 값 유형 은 byte,short,int,long,float,double,decimal,char,bool 과 struct 등 을 포함 합 니 다.우리 가 인용 유형 을 설명 할 때 시스템 은 즉시 위탁 관리 더미 에 공간 을 분배 하지 않 습 니 다.우리 가 new 를 사용 한 후에 만...시스템 은 위탁 관리 더미 에 메모리 공간 을 열 어 데 이 터 를 저장 하고 주 소 를 위탁 관리 창고 에 저장 합 니 다.인용 유형 은 배열,클래스,인터페이스,의뢰,데이터 등 을 포함 하기 때문에 인용 유형 은 변수 에 저 장 된 실제 데 이 터 를 포함 하지 않 고 실제 데 이 터 를 저장 하 는 인용 입 니 다.만약 에 여러 개의 인용 변수 가 조작 할 때 한 변수 만 있 으 면 값 을 변경 합 니 다.다른 변 수 는 이러한 값 의 변 화 를 자동 으로 반영 합 니 다.예 를 들 어 우 리 는 다음 과 같은 변 수 를 설명 합 니 다.

 static void Main(string[] args)
  {
    string name = "   ";
    int age = 20;
    string className = "    ";
    Console.WriteLine($"  :{name}
:{age}
:{className}"); Console.ReadLine(); }
그러면 위의 분석 에 따 르 면 age 는 값 형식 이 고 name 과 className 은 인용 형식 이기 때문에 age 는 위탁 관리 스 택 에 변수 와 데 이 터 를 직접 저장 하고 name 과 className 은 인용 으로 저장 합 니 다.이 인용 은 위탁 관리 더 미 를 가리 키 며 위탁 관리 더 미 를 가리 키 며 해당 하 는 데 이 터 를 저장 합 니 다.

이 두 가 지 는 관련 도 있 고 차이 점도 있 으 며 이 두 가 지 는 전환 할 수 있다.바로 우리 가 말 하 는'포장'작업 과'분해'작업 이다.공통점 과 차이 점 은 다음 과 같다.
공통점
4.567917.인용 유형 은 인 터 페 이 스 를 실현 할 수 있 고 값 유형 중의 구조 체 도 인 터 페 이 스 를 실현 할 수 있다4.567917.인용 유형 과 값 유형 은 모두 System.Object 류 에서 계승 되 고 C\#의 모든 유형 은 사실 System.Object 를 계승 합 니 다.이것 은 데이터 형식의 기본 클래스 입 니 다차이 점
값 형식 과 인용 형식 은 모두 System.Object 클래스 에서 계승 되 지만.그러나 거의 모든 인용 유형 은 System.Object 에서 직접 계승 되 고 값 유형 은 하위 클래스 System.ValueType 을 계승 합 니 다.
System.ValueType 은 System.Object 를 직접 계승 하지만 System.ValueType 자 체 는 값 형식 이 아 닌 클래스 형식 입 니 다.System.ValueType 은 멤버 를 추가 하지 않 았 지만 계승 하 는 방법 을 덮어 썼 습 니 다.
값 형식 에 더욱 적합 하도록 합 니 다.또한 특히 주의해 야 할 것 은 string 형식 은 인용 형식 이지 만 평소 작업 할 때 값 형식 과 더 비슷 하 다 는 것 을 알 게 되 었 습 니 다.이것 은 연산 자 를 다시 불 러 온 결과 이지 만 인용 형식 입 니 다.
그 데이터 형식의 계승 관 계 는 다음 과 같다.

4.데이터 형식 전환:
위 에서 분석 한 c\#데이터 형식 을 보면 우 리 는 이러한 유형 간 의 상호 전환 을 생각 할 수 있 습 니 다.우리 의 데이터 유형 전환 은 근본적으로 유형 주조 라 고 하거나 데 이 터 를 한 유형 에서 다른 유형 으로 바 꾸 는 것 이 라 고 할 수 있 습 니 다.
C\#에서 유형 주 조 는 두 가지 형식 이 있 습 니 다.
4.567917.암시 적 형식 전환-이러한 전환 은 C\#기본 적 인 안전 방식 으로 전환 되 어 데 이 터 를 잃 어 버 리 지 않 습 니 다.예 를 들 어 어 어 릴 때 부터 의 정수 유형 은 큰 정수 유형 으로 바 뀌 었 고 파생 류 에서 기본 류 로 바 뀌 었 다4.567917.명시 적 유형 전환-명시 적 유형 전환,즉 강제 유형 전환.현식 변환 은 연산 자 를 강제로 변환 해 야 하 며,강제 변환 은 데이터 손실 을 초래 할 수 있다.
자주 사용 하 는 디 스 플레이 형식 변환 세 가 지 를 소개 합 니 다.
4.1 값 형식의 강제 변환
       (데이터 형식)  변수 이름 이나 값.이런 유형의 강제 변환 은 보통 값 형식 사이 에 사용 된다.예 를 들 어 데이터 베 이 스 를 디자인 할 때 사용자 표(user)는 성별 필드 Sex(0 대표 남,1 대표 여)가 있 습 니 다.우 리 는 보통 bit 또는 int 형식 으로 저장 하고 인터페이스 에 대표 적 인 값 을 보 여 줍 니 다.이런 장점 은:
코드 를 쉽게 유지 할 수 있 고 변수 에 합 법 적 이 고 기대 하 는 값 을 지정 하 는 데 도움 이 됩 니 다.매 거 진 코드 를 더욱 명확 하 게 하고 서술 적 인 이름 으로 전체 수 치 를 표시 할 수 있 습 니 다.의미 가 모호 한 숫자 로 표시 하 는 것 이 아니 라 프로 그래 밍 을 할 때 매 거 진 형식의 전환 이 필요 합 니 다.주의해 야 할 것 은
이러한 유형의 수치 변환 은 소수점 이 int 형 으로 바 뀔 때 시스템 이 반올림 하지 않 고 간단하게 버 립 니 다.변환 코드 는 다음 과 같 습 니 다:

static void Main(string[] args)
  {
   //        
   Gender gender = Gender.Male;
   Console.WriteLine((int)gender);
   Console.ReadLine();
  }
  /// <summary>
  ///   :1    2   
  /// </summary>
  public enum Gender : int
  {
   Male = 0,
   Female = 1
  }
4.2 강제 형식 변환 Parse
이러한 유형의 수치 변환 은 문자열 이 수치 형 으로 바 뀌 는 상황 에서 자주 사용 되 는데 주의해 야 할 것 은 문자열 이 유효한 숫자 형식 이 어야 한다 면 시스템 이 이상 한 정 보 를 반환 하지 않 으 면 입력 문자열 의 형식 이 정확 하지 않다 는 것 이다.다음은 문자열 의 수치 변환 과 수치 변환 문자열 의 코드 입 니 다:

static void Main(string[] args)
  {
   //             
   double myDouble = double.Parse("88.88");
   float myFloat = float.Parse("88.66");
   int myInt = int.Parse("20");
   //           
   string myDoubleToStr = myDouble.ToString();
   string myFloatToStr = myFloat.ToString();
   string myIntToStr = myInt.ToString();
   Console.WriteLine("myDoubleToStr={0},myFloatToStr={1},myIntToStr={2}", myDoubleToStr, myFloatToStr, myIntToStr);
   Console.ReadLine();
  }
4.3 만능 변환기 강제 변환 Convert
        Convert 는 만능 변환 함수 로 임의의 데이터 형식 간 의 전환 을 실현 할 수 있 으 며,사용 하기에 위의 두 가지 조건 이 까다 롭 지 않 기 때문에 사용 하 는 것 을 추천 합 니 다.주의해 야 할 것 은 소수 가 정형 으로 전 환 될 때 소수 점 이 있 으 면 처리 규칙 이 첫 번 째 강제 유형 전환 과 다르다 는 것 이다.
그 처리 규칙 은:
  • 작은 숫자 가 5 보다 적 으 면 버린다
  • 4.567917.작은 숫자 가 5 라면 정수 부분 을 보면 기 진 우 는 들 어가 지 않 는 다.예 를 들 어 88.5 는 88,87.5 로 바 뀌 거나 88 로 바 뀌 는 것 이다4.567917.작은 숫자 가 5 보다 크 면 진 위 를 한다.
    
    /// <summary>
      ///   Parse      
      /// GHB BY 2020-07-10
      /// </summary>
      public static void ParseData()
      {
    
       double myDouble = double.Parse("88.5");
       float myFloat = float.Parse("87.5");
       int myInt = int.Parse("20");
    
       int myDoubleToInt = Convert.ToInt32(myDouble);
       int myFloatToInt = Convert.ToInt32(myFloat);
       double myIntToDouble = Convert.ToDouble(myInt);
    
       Console.WriteLine( "myDouble={0}
    myFloat={1}
    myInt={2}
    " + "myDoubleToInt ={3}
    myFloatToInt={4}
    myIntToDouble={5}
    ", myDouble, myFloat, myInt, myDoubleToInt, myFloatToInt, myIntToDouble); Console.ReadLine(); }
    운행 결 과 를 보면 88.5 와 87.5 가 정형 으로 바 뀌 었 을 때 모두 88 이 었 다.

    총화
             이상 은 이번 공 유 된 내용 입 니 다.우 리 는 먼저 C\#의 데이터 유형 과 값 유형 과 인용 유형의 차 이 를 분 석 했 고 마지막 으로 세 가지 유형 전환 함수 와 그들의 차이 점 과 사용 장면 을 소 개 했 습 니 다.주로 소수점 에 대한 규칙 입 니 다.
    여기 서 C\#데이터 형식 과 그 변환 에 관 한 상세 한 설명 을 소개 합 니 다.더 많은 관련 c\#데이터 형식 변환 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기