문제
습니다.Net 읽을 수 있는 문자열 값으로 다른 데이터 형식을 사용하여 중 <datatype>.parse
나 Convert.To<DataType>
.
나는 익숙하지 않의 기본을 분석 대 변환 그래서 나는 항상 손실을 물을 때는 하나 더/빨/더 적절하다.
그 어느 방법이에서 최고의 어떤 종류의 상황?
해결책
이 Convert.ToXXX()
방법을 대체할 수 있는 올바른 또는 이와 유사한 유형 동 .Parse()
고 .TryParse()
특별한 문자열:
//o is actually a boxed int
object o = 12345;
//unboxes it
int castVal = (int) 12345;
//o is a boxed enum
object o = MyEnum.ValueA;
//this will get the underlying int of ValueA
int convVal = Convert.ToInt32( o );
//now we have a string
string s = "12345";
//this will throw an exception if s can't be parsed
int parseVal = int.Parse( s );
//alternatively:
int tryVal;
if( int.TryParse( s, out tryVal ) ) {
//do something with tryVal
}
의 경우 컴파일러 최적화를 플래그 TryParse 은 매우 빠른 최선의 방법에서 번호로 문자열입니다.그러나 만약 당신이하는 개체를 수 있습 int 되고 있는지 또는 문자열로 변환.ToInt32 은 더 빠르다.
다른 팁
여기 당신을 위해 답변:
http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=77428
하지만 제 생각에 현대적인 버전이다.NET,최고의 것을 사용하 TryParse 어떤 경우에,이 있는 경우에는 의심의 여지가 전환 작동합니다.
나의 큰 팬 TryParse, 기 때문에,저 당신의 많은 두통의 오류 잡고 있을 때 기회가 가치 당신이 구문 분석의 적절한 형식입니다.
나의 순서는 일반적으로:
- Parse(이 될 수 있다면 확실한 값이 오른쪽 종류,내가 할지 확인하이)
- TryParse(면 나는 확신할 수는 없는 일이 발생 할 때마다 사용자 입력이 참여,또는 입력한 시스템을 제어할 수 없습니다)
- 변환(는 생각에 나는 사용하지 않기 시작하기 때문에 사용하여 분석하고 TryParse 지만,내가 잘못 될 수 있습니다.)
또한 DirectCast 방법을 사용해야 하는 경우에만 무엇인지 종류의 개체입니다.그 속도는 빠르지만 하지 않는 모든 적절한 검사합니다.내가 사용하는 DirectCast 때에 내가 추출하는 값에서 느슨하게 입력 DataTable 때 나는 유형에 대한 각각의 열입니다.
해야 하는 경우 속도,내가 확신이 직접 캐스팅 가장 빠른 방법입니다.그는 말했다,나는 정상적으로 사용 가능합니다.분석 또는.TryParse 기 때문에 보이는 것을 더 쉽게 읽기,그리고 행동하는 예측 가능한 방식이다.
로 변환이 실제로 전화문 분석 후드,내가 믿습니다.그래서 약간의 차이가 있고,정말 그냥하는 것 같 문제가 될 수 있습니다.