선택적 매개 변수에서 DateTime의 기본값 설정
이 질문에 이미 답변이 있습니다.
선택적 매개 변수에서 DateTime의 기본값을 어떻게 설정할 수 있습니까?
public SomeClassInit(Guid docId, DateTime addedOn = DateTime.Now???)
{
//Init codes here
}
nullable 형식과 null
컴파일 시간 상수 라는 사실을 활용하는 해결 방법이 있습니다 . (하지만 약간의 해킹이며 실제로 할 수없는 경우가 아니면 피하는 것이 좋습니다.)
public void SomeClassInit(Guid docId, DateTime? addedOn = null)
{
if (!addedOn.HasValue)
addedOn = DateTime.Now;
//Init codes here
}
일반적으로 다른 답변에서 제안 된 표준 오버로딩 접근 방식을 선호합니다.
public SomeClassInit(Guid docId)
{
SomeClassInit(docId, DateTime.Now);
}
public SomeClassInit(Guid docId, DateTime addedOn)
{
//Init codes here
}
addedOn = DateTime.Now
'지금'이전에 모든 것이 추가되므로 결과가 전혀 나오지 않을 것이기 때문에 정말로 원하지 않았다고 생각합니다 . :)
기본값 DateTime
은 다음과 같이 설정할 수 있습니다.
public void SomeClassInit(Guid docId, DateTime addedOn = default(DateTime))
업데이트
SQL Server를 다루는 경우 기본값 (DateTime)이 1/1/0001 인 것을 허용하지 않는다는 점을 잊지 마십시오. SQL Server의 최소 날짜 시간은 1753 년 1 월 1 일 ( 설명 )입니다. 그러나 SQL의 DateTime2는 1/1/0001을 허용합니다.
LukeH의 솔루션을 다음과 같이 약간 수정합니다.
public void SomeClassInit(Guid docId, DateTime? addedOn = null)
{
DateTime TargetDateTimeProperty = addedOn ?? DateTime.Now;
}
더 짧고 더 읽기 쉬운 것 같습니다.
선택적 매개 변수를 사용하지 마십시오.
public SomeClassInit(Guid docId, DateTime addedOn)
{
SomeClassInitCore(docId, addedOn);
}
public SomeClassInit(Guid docId)
{
SomeClassInitCore(docId, null);
}
private SomeClassInitCore(Guid docId, DateTime? addedOn)
{
// set default value
if (addedOn.IsNull) addedOn = DateTime.Now;
//Init codes here
}
.NET 4.0에는 선택적 매개 변수가 있습니다. ( 구글은 또한 당신의 친구 입니다.)
편집 (Anthony Pegram이 정확하기 때문에 의견) ...
그리고 네, 그렇게 할 것입니다.
그러나 DateTime.
Now (정적 속성, 해당 클래스)는 run-time 때까지 알 수 없습니다 . 따라서 선택 값 으로 사용할 수 없습니다 .
.NET 3.5 doesn't ... so then you would have to do what JS Bangs said...
public SomeClassInit(Guid docId)
{
return SomeClassInit(docId, DateTime.Now);
}
public SomeClassInit(Guid docId, DateTime addedOn = DateTime.Now???)
{
//Init codes here
}
or even the null checking/null value parameter from munificent's answer.
Cheers Anthony.
C# doesn't have optional parameters in this sense. If you want to make addedOn
optional, you should write an overload that doesn't require that parameter, and passes DateTime.Now
to the two-argument version.
참고URL : https://stackoverflow.com/questions/3031110/set-default-value-for-datetime-in-optional-parameter
'your programing' 카테고리의 다른 글
두 개의 다른 글꼴 크기를 가진 NSAttributedString의 예? (0) | 2020.10.11 |
---|---|
C의 공유 전역 변수 (0) | 2020.10.11 |
Java에서 파일을 한 위치에서 다른 위치로 어떻게 이동합니까? (0) | 2020.10.11 |
부트 스트랩 CSS를 사용하여 페이지 중앙에 나란히 두 개의 div를 수평으로 정렬 (0) | 2020.10.11 |
리디렉션없이 HTML 양식을 제출하는 방법은 무엇입니까? (0) | 2020.10.11 |