DateTime Parse(string s) 및 TryParse(string s, out datetime )은 문자 날짜 및 시간을 동등한 System.DateTime으로 변환하는 데 사용됩니다. 따라서 함수의 다른 매개 변수를 제외하고 그들 사이에 차이점이 있습니까? 먼저 코드를 살펴보겠습니다.
string dateTimeStr = ""; DateTime dt = DateTime.Parse(dateTimeStr);
빈 문자열을 실행하고 이를 날짜 및 시간 유형으로 변환합니다. 분명히 변환할 수 없으며 Parse()에서 예외가 발생합니다. System. FormatException: s는 포함되지 않습니다. 날짜 및 시간 의 유효한 문자열 표현입니다. 그러나 TryParse 변환 방법을 실행하면:
string dateTimeStr = ""; DateTime dt2; //dt2未经初始化,就被传递给函数TryParse() bool sucflag = DateTime.TryParse(dateTimeStr, out dt2);
변환은 먼저 예외를 발생시키지 않으며, dt2에는 날짜 및 시간의 최소값이 할당되고 sucflag는 false입니다. 함수에 대한 설명을 살펴보세요.
이 메서드가 반환되면 변환이 성공한 경우 s에 포함된 날짜 및 시간에 해당하는 System.DateTime 값이 포함되거나 System.DateTime이 포함됩니다. 변환이 실패하면 값입니다. s 매개 변수가 null이거나 빈 문자열("")이거나 날짜 및 시간의 유효한 문자열 표현을 포함하지 않는 경우 변환이 실패합니다. *이 매개변수는 초기화 없이 전달됩니다. 이 함수는 예외를 발생시키지 않습니다.
더 자세히 말하자면, Parse()에서 발생한 예외는 필연적으로 성능에 영향을 미치지 않습니다. 이것은 A 디자인입니다. 뛰어난 성능을 최적화하는 패턴, Try-Parse 패턴이라고 합니다. 다음은 Microsoft의 공식 설명입니다.
성능에 매우 민감한 API의 경우 이전 섹션에서 설명한 Tester-Doer 패턴보다 훨씬 빠른 패턴을 사용해야 합니다. 패턴 조정이 필요합니다. 잘 정의된 테스트 사례를 멤버 의미의 일부로 만들기 위한 멤버 이름입니다. 예를 들어 DateTime은 문자열 구문 분석이 실패할 경우 예외를 발생시키는 Parse 메서드를 정의합니다. 파싱하지만 파싱에 실패하면 false를 반환하고 out 매개 변수를 사용하여 파싱에 성공한 결과를 반환합니다.
Try-Parse 모드를 설명하면서 Microsoft는 제안했습니다. 또 다른 모드: Tester-Doer 모드, Tester-Doer 모드란 무엇인가요? 함수에 예외를 작성하면 성능이 저하됩니다. Microsoft는 예외로 인한 부작용을 줄이기 위해 이 모드를 제공했습니다.
다음 코드:
ICollection<int> numbers = 省略获取数据的逻辑 numbers.Add(1);//Add此处不做可写性检查
위 결함: 컬렉션이 읽기 전용인 경우 Add 메서드에서 예외가 발생합니다. 이 메소드가 호출되는 경우 예외가 발생하여 시스템 성능에 영향을 미치는 경우가 많습니다. 이러한 디자인 결함을 피하기 위해 Microsoft는 다음을 제안했습니다. 때때로 예외를 발생시키는 멤버의 성능은 멤버를 두 개로 나누어 향상될 수 있습니다. 패턴 요약:
멤버는이 예에서
IsReadOnly속성인 Condition은 잠재적으로 발생하는 작업을 수행하는 데 사용되는 멤버로, 이 예에서는 Add 메서드입니다. 성능 향상을 위해 읽기 전용 예외가 발생하는 횟수를 추가합니다. 요약 Try-Parse Pattern과 Tester-Doer 모드는 예외 발생을 대체하고 설계 성능을 최적화하는 역할을 하는 두 가지 최적화 방법입니다.
위 내용은 Parse와 TryParse를 통한 Try-Parse와 Tester-Doer 모드의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!