2014-01-13 16 views
2

좋은 하루였습니다.
저는 작업을 처리하는 무언가를 연구하고 있습니다.
각 작업은 3 개의 문자열과 DateTime 개체로 구성됩니다.DateTime.Now 클래스 생성자

다음은 내가 작성한 생성자입니다. 컴파일 할 때

public Task(string von, string was, string an, DateTime zeit = DateTime.Now) 

나는 컴파일러 오류를 얻을

Default parameter value for 'zeit' must be a compile-time constant (CS1736)

나는 DateTime.Now의 값이있는 생성자가 호출되는 시간에 따라 달라 -obvioulsy- 즉, 문제가 가정 내가 여기 갖고 싶어하는 요점.

나는 [스레드]를 이미 살펴 봤지만 DateTime 객체에 대한 메모리 요구가 항상 같고 스레드가 그 호출의 알 수없는 힙 요구라고 말하기 때문에 실제로이 스레드를 보았습니다. 1
는 이미 (아래 참조) 해결 방법에 대한 아이디어를 가지고 있지만, 우리 모두가 알고있는 일 어라운드 내가 현재 날짜 시간을 사용하려는 경우

public Task(string von, string was, string an, DateTime zeit){ 
    if(zeit == null) 
     dateOfCreation = DateTime.Now; //dateOfCreation being the name of Task's internal DateTime field. 
    else 
     dateOfCretion = zeit; 

그래서 내가 null을 전달 가장 좋은 방법은 아니다. 그러나 : 항상 null을 전달하는 데 시간과 노력이 필요하다면, 매번 DateTime을 전달할 수도 있습니다. 지금.

질문 : 매개 변수 DateTime zeit = DateTime.Now을 받아들이거나 동일한 결과로 대체 할 수있는 방법이 있습니까? 대신 오버로드

답변

8

사용 생성자 :

public Task(string von, string was, string an, DateTime zeit) 
{ 
... 
} 

public Task(string von, string was, string an) : this(von, was, an, DateTime.Now) 
{ 
    ... 
} 
+0

감사합니다, 나는 그것을 기회를 줄 것이다. 이것은 내가 원하는 인터페이스를 제공하는 반면, 내 자신의 해결 방법처럼 작동합니다. – Mark