Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발 달리기

C# 기초 - 데이터 다루기 실습 본문

C#

C# 기초 - 데이터 다루기 실습

옹즤 2025. 3. 29. 08:08
  • 문제 1. 변수 만들기
    - level, count 의 이름을 가진 정수형 변수
    - percentage , speed 의 이름을 가진 실수형 변수
    - nickname, description 의 이름을 가진 문자형 변수
  • 문제 2. 위 문제에서 만든 변수에 임의의 데이터 입력하기

코드 작성

1
2
3
4
5
6
7
8
9
10
11
// 1-1 변수 만들기, 1-2 변수에 데이터 입력하기
{
    int level = 50;
    int count = 5;
 
    float percentage = 25.0f;
    float speed = 2.0f;
 
    string nickname = "햄북스딱스";
    string description = "하이빵가루";
}
cs

 

  • 문제 3. 형변환 숫자 -> 숫자

코드 작성

1
2
3
4
5
6
7
8
// 1-3 형변환 숫자-숫자
{
    int iTen = 10// 1-3
    float fTen = (float)iTen;
 
    float fFive = 5.5f;
    int iFive = (int)fFive;
}
cs

 

  • 문제 4. 형변환 숫자 -> 문자

코드 작성

1
2
3
4
5
6
7
8
//  1-4 형변환 숫자-문자
{
    int n = 10;
    float f = 0.5f;
 
    string nStr = n.ToString();
    string fStr = f.ToString();
}
cs

 

  • 문제 5. 형변환 문자 -> 숫자

코드 작성

1
2
3
4
5
6
7
8
// 1-5 형변환 문자-숫자
{
    string strTen = "10"// 1-5
    string strSix = "6.2";
 
    int iTen = Convert.ToInt32(strTen);
    float fSix = Convert.ToInt32(strSix);
}
cs

 

  • 문제 6. Convert 와 Parse 의 차이

Convert 클래스는 여러 자료형에서 다른 여러 자료형들로의 형변환이 가능하지만 Parse() 함수는 오직 문자열에서 다른 자료형들로의 형변환만 가능하다.두 방법 모두 형식에 맞지 않는 형변환 수행 시 Format Exception 에러를 발생시킨다.

실제 Convert 는 여러 데이터 타입을 다른 데이터 타입으로 변환해주는 기능이라고 기재되어있다.

Parse의 경우 UTF-8 방식의 문자열만 변환이 가능하다고 한다.

UTF-8이 뭔지는 검색해서 봐도 머리만 아플 뿐 그냥 문자열이라고 이해하였다.

결국 Parse는 문자열만 다른 데이터 타입으로 변환이 가능하다는 뜻이다.

이 한계를 극복하기 위해 TryParse 기능을 사용하는 것으로 보인다.

 

여기서 드는 의문은

그럼 Convert만 써서 변환하면 되는데 왜 굳이 다른 기능 2가지가 더 있는가이다.

이 부분에 대해서 챗 gpt를 이용하여 궁금증을 해소하였다.

더보기

Convert, Parse, TryParse가 각각 존재하는 이유

 

C#에서 형변환을 수행할 때 Convert, Parse, TryParse가 각각 존재하는 이유는 상황별로 적절한 형변환 방식이 필요하기 때문입니다. 단순히 모든 데이터 타입을 변환할 수 있는 Convert만 사용해도 되겠지만, 다른 방식이 존재하는 이유는 성능, 예외 처리, 사용 목적 등의 차이가 있기 때문입니다.


🔹 Convert

📌 특징

  • 거의 모든 데이터 타입을 변환할 수 있음
  • null 값을 변환할 때 기본값(default)을 반환 (null을 0이나 false로 변환)
  • 변환이 실패하면 예외(Exception)를 발생시킴

📌 예제

int result1 = Convert.ToInt32("123"); // 정상 변환
int result2 = Convert.ToInt32(null);  // 0 반환 (예외 발생 X)
int result3 = Convert.ToInt32("abc"); // 예외 발생 (FormatException)

🔹 Parse

📌 특징

  • 문자열(String) → 특정 타입 변환
  • 변환 실패 시 예외 발생 (FormatException, OverflowException 등)
  • null 값을 변환하면 예외 발생

📌 예제

int result1 = int.Parse("123");  // 정상 변환
int result2 = int.Parse(null);   // 예외 발생 (ArgumentNullException)
int result3 = int.Parse("abc");  // 예외 발생 (FormatException)

🔹 TryParse

📌 특징

  • 문자열(String) → 특정 타입 변환을 시도
  • 변환 실패 시 예외를 발생시키지 않고 false 반환
  • 예외 처리를 하지 않아도 되므로 안정적

📌 예제

bool success1 = int.TryParse("123", out int result1); // true, result1 = 123
bool success2 = int.TryParse(null, out int result2);  // false, result2 = 0
bool success3 = int.TryParse("abc", out int result3); // false, result3 = 0

 

❓ 그럼 Convert만 쓰면 안 될까?

⚡ Convert를 항상 쓰지 않는 이유

  1. 성능 이슈
    • Convert는 내부적으로 여러 단계를 거쳐 변환하기 때문에 Parse, TryParse보다 상대적으로 속도가 느릴 수 있음.
  2. 불필요한 예외 발생
    • Parse는 예외를 발생시키기 때문에 예외 처리를 해야 하지만, TryParse는 예외 없이 변환 여부를 확인할 수 있어 더 안정적.
  3. 코드의 명확성
    • TryParse를 사용하면 실패를 예측하고 예외 없이 처리 가능하므로 코드가 안정적이고 가독성이 좋음.
    • Convert는 어떤 타입이든 변환을 시도할 수 있지만, Parse는 특정 타입에 맞게 변환을 수행하므로 더 직관적임.

✅ 언제 어떤 걸 써야 할까?

변환 방식변환 대상실패 시 동작예외 처리 필요 여부사용 추천
Convert 모든 타입 예외 발생 or 기본값 반환 필요함 다양한 타입 변환 시
Parse 문자열만 예외 발생 필요함 입력 값이 유효한지 확실할 때
TryParse 문자열만 false 반환 불필요 안정적인 변환이 필요할 때

🏆 결론

  • 빠른 변환이 필요하고, 실패 시 예외 처리가 가능하면 Parse
  • 안정적이고 예외 없이 변환을 수행하고 싶다면 TryParse
  • 모든 데이터 타입을 다룰 때는 Convert

즉, 모든 경우에 Convert를 쓰는 것은 가능하지만, 상황에 따라 적절한 방법을 선택하는 것이 더 성능적이고 안전한 코드를 작성하는 방법입니다. 🚀

'C#' 카테고리의 다른 글

C# 기초 - 대한민국의 수도는?  (0) 2025.04.01
C# 기초 - 숫자..인가요?  (0) 2025.04.01
C# 기초 - 본격 프로그래밍 시작해보기  (0) 2025.04.01
C# 기초 - 연산자 실습  (0) 2025.03.29
공부용  (0) 2025.03.29