Convert 의 경우 기본 데이터 형식을 다른 기본 데이터 형식으로 변환한다.
Parse 의 경우 문자열 표현을 해당하는 형 으로 변환한다.
TryParse 의 경우 문자열 표현을 해당하는 형 으로 변환한다. 반환 값은 변환의 성공 여부를 나타낸다.
str strOne = "1";
int One;
이라는 문자열을 변화 시키고 싶은 경우
One = Convert.Toint32(strOne);
One = int.Parse(strOne);
int32.TryParse(strOne, out One);
Convet와 Parse의 차이는 null 값에서 발생한다.
변환이 가능하면 문자열을 정수형으로 바꿔주고
불가능 할 경우 오류(FormatException)가 발생한다.
null 값의 경우,
Convert는 0을 반환하는데 반면
Parse는 오류(ArgumentNullException)를 발생한다.
이러한 오류를 무시하고 실행가능 하게 하는것이 TryParse이다.
다른 두 변환과는 달리 값에 직접 바꾸는 것이 아니라 변환에 성공했는지 안 했는지에 대한 값을 반환한다.
bool success = int32.TryParse(strOne, out One);
[ 결과 : success == (bool)true, One == (int)1 ]
변환에 성공하면 true 값을 반환하고 원하는 값을 반환한다.
string strName = "LeeHun";
bool success = int32.TryParse(strName, out One);
[ 결과 : success == (bool)false, One == 0 ]
bool change = true;
string NotBool = "QWER";
bool success = bool.TryParse(NotBool, out change);
[ 결과 : success == (bool)false, change == (bool)false ]
변환에 실패하면 false 값을 반환하고 바꾸려고 한 값에는 0을 반환한다.
바꾸려고 한 값의 형태가 bool 형인 경우 false를 반환한다.
( bool에서 0은 false이기 때문에 ).
이는 단점이자 장점이다.
이를 이용하는 코드를 위의 블로그에서 보았다.
if ( Int32.TryParse( 어떤 문자열, out in result ) )
{
// 문자열이 정수형일 때만 실행
}
이를 활용하면
if ( bool.TryParse( 아무거나, out in result ) )
{
// 모든 것 중에서 형태가 true인 것만 실행
}
가 가능할 것 같다.
그 외에도 다양한 적용이 가능할 것 같다.