study

[C#] Chapter 04. Data Casting

yz 2022. 5. 31. 14:27

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MyFirstCSharp_01
{
    // 데이터 타입 형변환(숫자 -> 문자, 문자 -> 숫자)
    // 숫자 -> 문자열로 형변환 .ToString(), Convert.ToString()
    // 문자열 -> 숫자로 형변환 Parse(), Convert.To***(), TryParce()
    public partial class Chap04_DataChange : Form
    {
        public Chap04_DataChange()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 숫자 -> 문자로 형변환

            // 변환될 숫자 형식 데이터 예제 생성
            int iValue1 = 10;
            int iValue2 = 20;
            double dValue = 10.4;

            // 반환(return)된 문자를 저장할 변수 생성
            string sValue1;
            string sValue2;

            // 1. .ToString() 명령어로 문자로 형변환 후 대입
            sValue1 = iValue1.ToString();
            MessageBox.Show(sValue1);

            // 2. Convert.ToString() 명령어로 문자로 형변환 후 대입
            sValue2 = Convert.ToString(iValue2);
            MessageBox.Show(sValue2);

            string sSumString = sValue1 + sValue2;
            MessageBox.Show(sSumString);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // 문자 -> 숫자로 형변환

            // 1. 숫자로 바꿀 문자열 변수, 값 예제 데이터 생성.
            string sValue1 = "안녕하세요.";
            string sValue2 = "10";
            string sValue3 = "10.12";

            // 2. 형변환되어 반환된 숫자를 저장할 숫자 type의 변수 생성
            int iValue1;
            int iValue2;    
            double dValue1;

            // 3. Parse()로 형변환
            //iValue1 = int.Parse(sValue1); // 숫자가 아닌 문자열을 변환하므로 오류 발생
            iValue2 = int.Parse(sValue2); // 정수 문자열("10")을 정수로 변환 성공
            //iValue1 = int.Parse(sValue3); // 정수 문자열을 정수 변수에 대입했으므로 오류 발생
            dValue1 = double.Parse(sValue3); // 소수 문자열을 소수 변수에 대입 성공

            // 4. Convert.To***()로 형변환
            //iValue1 = Convert.ToInt32(iValue1); // 정수로 바뀔 수 없는 문자열이므로 오류 발생
            iValue2 = Convert.ToInt32(sValue2); // 정수로 바뀔 수 있는 문자열이므로 형변환 성공
            dValue1 = Convert.ToDouble(sValue3); // 소수로 바뀔 수 있는 문자열이므로 성공

            // ** 숫자로 바뀔 수 없는 값(문자열)인 경우에 Parse(), Convert.To~~~()를 활용하여 형변환을 시도하면 코드 작성할 땐 문제 없지만 실행하면 오류가 발생한다.

            // 5. 정수, 소수로 변환할 수 있는 문자열인지 판단하는 명령어(method) TryParse()
            int iResult; // 변환된 값이 저장되는 데이터 변수
            int.TryParse(sValue1, out iResult);
            MessageBox.Show(Convert.ToString(iResult));

            int.TryParse(sValue2, out iResult);
            MessageBox.Show(Convert.ToString(iResult));

            int.TryParse(sValue3, out iResult);
            MessageBox.Show(Convert.ToString(iResult));

            double dResult;
            double.TryParse(sValue3, out dResult);
            MessageBox.Show(Convert.ToString(dResult + 10));
        }
    }
}
LIST