Today
Total
Recent Posts
Recent Comments
Archives
05-19 03:21
«   2024/05   »
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
반응형
관리 메뉴

UD_park's IT story

[C#] 형 변환의 기본 개념과 사용법 본문

IT - Language/C#

[C#] 형 변환의 기본 개념과 사용법

kingllzn 2018. 6. 25. 13:44
반응형
SMALL

[ 포스팅 내용은

시작하세요! C# 7.1 프로그래밍에서

발췌 하였습니다]

 

[보기용 예제 소스 코드에서 오류 발생시에

댓글이나 방명록에 글을 남겨 주시면 수정/보완하겠습니다]

 

 

 

이번에는 형 변환, 그리고 배열과

다차원 배열에 대해 기본 개념과

사용법을 포스팅 해보겠습니다

 

 

첫 번째는 형 변환입니다

 

말 뜻을 알고 넘어가겠습니다

형 변환이란 말 그대로

C#에서 사용할 자료형을

바꾸는 작업을 말합니다

 

예를들어 int를 char로

char를 int로

int를 double로

double을 char로 등

이러한 작업들을 하는것이 바로

형 변환 이라고 합니다

 

형 변환의 방법은 2가지로

이루어져 있습니다

 

1. 암시적(Implicit) 변환

2. 명시적(Explicit) 변환

 

 첫 번째의 암시적 변환은

쉽게 말해서 사용자가 굳이

변환 하는 코드를 작성하지않아도

컴파일러, 즉 쉽게 생각해서

컴퓨터가 알아서 변환하는

방법입니다

 

두 번째의 명시적 변환은

사용자가 사용할 변수의 자료형식을

사용자의 필요에 따라서 변경하는

코드를 통해서 변환 하는 방법입니다

 

 

이렇게만 본다면 암시적 변환이

편하고 자주 쓰이겠다고 생각하시겠지만

암시적 변환은 사용할 수 있는 조건이

명시적 변환 보다 까다롭다고 생각하시면

될 것 같습니다

 

 

제가 보기로 만든 코드를

보면서 자세히 설명 해보겠습니다

 

13번 14번 코드를 자세히

보시면 아주 간단하게 변환 됩니다

암시적 변환은 비교적으로

변환 방법이 명시적 변환에 비해

쉽고 간결하게 이루어 집니다

 

거의 다른 변수 그릇에

담기만 하면 끝난다고

생각하셔도 무방할 것 같습니다

 

그러나 암시적 변환에 단점으론

아래의 코드 사진을 참고하시면

쉽게 파악 하실 수 있습니다

 

int였던 Number를 string으로

바꿨더니 long에 들어가려던

Number에서 에러가 일어납니다

 

"암시적으로 'string'형식을 'long'형식으로 변환할 수 없습니다"

이 말은 int는 정수형의 32비트이고

long은 정수형의 64비트이기에

둘 다 정수형이지만

담는 그릇의 용량 크기는 long이

더 큽니다

 

쉽게 얘기하자면 string은 반찬 접시,

int는 밥그릇이라고 하자면

long은 int보다 좀 더 큰 밥그릇이기에

암시적 변환이 가능한 것입니다

 

종류는 같지만 크기가 좀 더 크기만

할 경우, 혹은 종류는 같지만 크기가

좀 더 작은 변수로 변환할때만

암시적 변환이 가능합니다

 

위의 코드처럼 아예 다른 자료형인

string 문자열 형식을 넣으려면

오류가 발생합니다

 

 

 

 

 

두 번째로 명시적 변환입니다

 

암시적 변환과 큰 차이는

없습니다만 14번 줄의

()괄호가 차이가 납니다

 

14번 줄의 (

long

)Number;

라는 코드가 바로 명시적 변환하는

작업 코드이며 이것을 다른말로

캐스팅(Casting)이라고 많이

부릅니다

 

위와 같이 사용하면 에러가

발생하지 않지만

아래의 코드와 같이 작성하면

또한 에러가 발생할 수 있습니다

 

 

그리고 두 번째 에러 종류입니다

 

 

그렇지만 중요한 것은

결과 값에서 나오는 것처럼

제대로 원하는 결과가 출력되지

않습니다

 

첫 번째 에러는 short라는

자료형의 밥그릇 크기가

int 보다 훨씬 작기에

int 밥그릇에 가득찼던 밥을

short에 옮겨 담으면

처음에 가지고있던 양에서

줄어들며 원하지 않은

결과가 나오는 원리라고

이해하시면 될것같습니다

 

두 번째 에러는

Number에서 50000이

string으로 바뀌면서 50000이란 값이

ASCII 코드로 해석된 결과로 '썐'이라는

값으로 바뀌어 버립니다

 

http://blog.naver.com/beaqon/220765413656shaeod.tistory.com/228

 

 

 

ASCII 코드에 대한 것으론

위의 블로그 내용을 참고하시면

될 것같습니다
(추후 아스키 코드에 대해

포스팅 하도록 하겠습니다)

 

 

 

위와 같은 문제점들이 발생하기에

저는 convert라는 변환 함수를 사용합니다

 

아래에 소스코드 보기를 참고로

설명하겠습니다

 

코드와 CMD 결과창에서

보시다시피 string의 자료형도

문제 없이 int 자료형으로 잘

바뀌는 것을 볼 수가 있습니다

 

그렇기에 저는 형 변환시에

처음부터 오류의 소지를 방지하고자

convert 함수를 사용하여

변수의 자료형을 변환 합니다

 

 

비록 코드가 암시적/명시적 변환에

비해서 길어지는 경향이 있지만

오류를 생각한다면 조금 길어지더라도

convert를 사용하시는 것을 추천합니다

 

ToString과 Parse 등의 사용법도

있지만 위의 convert를 가장 추천합니다

 

 

 

혹시 다른것에 대해 궁금하신게

있으시다면

댓글에 달아주세요

 

아는것이면 친절하게 쉽게

모르는것이면 또 제가 알아내서

친절하게 쉽게 포스팅해서

설명해드리겠습니다

 

 

 

반응형
LIST
Comments