답변:
Parse
값을 구문 분석 할 수없는 경우 예외를 throw하고 성공 여부를 나타내는를 TryParse
반환합니다 bool
.
TryParse
단지 try
/ catch
내부적으로 가 아닙니다. 요점은 예외없이 구현되어 빠르다는 것입니다. 실제로 이것이 구현 될 가능성이 가장 높은 Parse
방법은 메서드가 내부적으로 호출 TryParse
한 다음을 반환하면 예외를 throw하는 것 false
입니다.
요컨대, Parse
값이 유효하다고 확신하는 경우 사용 하십시오. 그렇지 않으면 TryParse
.
문자열을 정수로 변환 할 수없는 경우
int.Parse()
예외가 발생합니다int.TryParse()
false를 반환합니다 (예외를 던지지 않음).Parse는 문자열에서 지정된 데이터 유형으로의 변환이 실패하는 경우 예외를 throw하는 반면 TryParse는 예외 발생을 명시 적으로 방지합니다.
TryParse는 값을 반환하지 않고 구문 분석이 성공했는지 여부를 나타내는 상태 코드를 반환합니다 (예외를 throw하지 않음).
기록을 위해 두 가지 코드를 테스트하고 있습니다. 단순히 문자열에서 숫자로 변환을 시도하고 실패하면 숫자를 0에 할당합니다.
if (!Int32.TryParse(txt,out tmpint)) {
tmpint = 0;
}
과:
try {
tmpint = Convert.ToInt32(txt);
} catch (Exception) {
tmpint = 0;
}
C #의 경우 가장 좋은 옵션은 try & Catch 대안이 예외를 throw했기 때문에 tryparse를 사용하는 것입니다.
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
고통스럽고 느리고 바람직하지 않지만 Debug의 예외가 중지되지 않는 한 코드는 중지되지 않습니다.
나는 그것의 매우 오래된 게시물을 알고 있지만 Parse 대 TryParse에 대한 몇 가지 세부 사항을 공유하려고 생각했습니다.
DateTime을 String으로 변환해야하는 시나리오가 있었고 datevalue null 또는 string.empty 인 경우 예외가 발생했습니다. 이를 극복하기 위해 Parse를 TryParse로 대체했으며 기본 날짜를 가져옵니다.
이전 코드 :
dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy");
dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy");
새 코드 :
DateTime startDate = default(DateTime);
DateTime endDate=default(DateTime);
DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate);
DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate);
다른 변수를 선언하고 TryParse를 위해 Out으로 사용해야합니다.
startDate
와 endDate
같은 DateTime.TryParse
항상 그들을 덮어 쓰게됩니다 DateTime.MinValue
. 잘못된 날짜 표현을 다른 값으로 변환해야하는 경우 반환 값을 확인하고 DateTime.TryParse
false이면 값을 명시 적으로 설정합니다.
DateTime?
( 날짜 시간 null 허용 )
double.Parse ( "-"); 예외를 발생시키는 동안 double.TryParse ( "-", out parsed); 0으로 구문 분석하므로 TryParse가 더 복잡한 변환을 수행한다고 생각합니다.
TryParse
반환 true
또는 false
? 이것이 "유효"한지 알 수있는 방법입니다.