20240814 TIL

Sungchan Ahn(안성찬)·2024년 8월 14일

내일배움캠프

목록 보기
5/104

데이터 다루기 실습

using System;

{
    int level = 1;
    int count = 5;

    float percentage = 0.01f;
    float speed = 1.3f;
    
    string nickname = "Chan";
    string description = "long hair";
} // 데이터 다루기 실습 1, 2 변수 만들고 데이터 입력

{
    int iTen = 10;
    float fTen = (float)iTen; //(float)생략 가능

    float fFive = 5.5f;
    int iFive = (int)fFive;

    Console.WriteLine(fTen);
    Console.WriteLine(iFive);
} // 3 형변환 숫자 - 숫자

{
    int n = 10;
    string strN = n.ToString();

    float f = 0.5f;
    string strF = f.ToString();

    Console.WriteLine(strN + "입니다.");
    Console.WriteLine(strF + "입니다.");
} // 4 형변환 숫자 - 문자

{
    string strTen = "10";
    int iTen = int.Parse(strTen);
    Console.WriteLine(iTen);

    string strSix = "6.2";
    float fSix;

    bool issuccess = float.TryParse(strSix, out fSix);
    Console.WriteLine(fSix);
} // 5 형변환 문자 - 숫자

Convert와 Parse()의 차이

string strTen = "10";
string strF = "4.3";
string strN = null;

Convert.ToInt32(strTen); // 10
Convert.ToInt32(strF); // FormatException
Convert.ToInt32(strN); // 0

int.Parse(strTen); // 10
int.Parse(strF); // FormatException
int.Parse(strN); // ArgumentNullException

위 코드에서 보면 Convert 클래스와 Parse 함수 모두 변환하고자 하는 자료형으로 변환할 수 없는 경우에 오류가 발생한다. 여기서 Convert와 Parse의 차이점을 확인할 수 있는데,

  • Convert의 경우, null 값은 int형으로 변환할 때 0을 반환
  • Parse의 경우, null에 대한 예외 처리가 되지 않아 ArgumentNullException 발생

여기서 null은 아무것도 없을 때를 표현, 0은 메모리에 0이라는 값이 존재하지만 null은 메모리에 값이 없는 상태이다.

  • int i = 0 일 때, 변수 i의 메모리에 0 값이 저장됨
  • int i = null 일 때, 변수 i의 메모리에 값이 없음
profile
게임 개발 기록

0개의 댓글