2012-01-12 12 views
10

come creare setter e getter Proprietà per datetime nullable. per esempio:Nullable DateTime?

private DateTime mTimeStamp; 

public DateTime TimeStamp 
{ 
     get { return mTimeStamp; } 
     set { mTimeStamp = value; } 
} 

supportati da attributi nullable setter e getter o ho di dichiararla pubblico?

private DateTime? mTimeStamp; 

public DateTime TimeStamp 
{ 

} 

risposta

17

si può solo fare questo, invece:

public DateTime? TimeStamp { get; set; } 

Se si stavano avendo problemi con il compilatore è probabilmente perché è stata modificata solo una delle parti associate - sia il private variabile membro o il tipo di dati della proprietà. Hanno bisogno di corrispondere, naturalmente, e maniglie di auto-proprietà che per te bene.

EDIT Giusto per chiarire ulteriormente, DateTime? non è solo decorato con un attributo ? - è del tutto diverso da DateTime. DateTime? è una scorciatoia per Nullable<DateTime>, che è un generico (Nullable<T>) che fornisce supporto nullable ai tipi non di riferimento avvolgendo il parametro generico T, che è un struct.

+0

+1 per "hanno bisogno per corrispondenza" e le proprietà di auto gestione che bene. – phoog

2

Si dovrebbe essere in grado di fare un DateTime nullable in questo modo:

private DateTime? mTimeStamp; 

public DateTime? TimeStamp 
{ 
     get { return mTimeStamp; } 
     set { mTimeStamp = value; } 
} 

È possibile utilizzare questo modificatore su altri tipi pure. Leggi qui: http://msdn.microsoft.com/en-us/library/1t3y8s4s%28v=VS.100%29.aspx

3

È possibile creare la proprietà nello stesso modo come un normale DateTime immobile:

public DateTime? TimeStamp { get; set; } 
2

Un DateTime nullable è un tipo discreto da un DateTime regolare e può essere usato come qualsiasi altro tipo . Così il vostro codice sarebbe:

private DateTime? mTimeStamp; 

public DateTime? TimeStamp 
{ 
     get { return mTimeStamp; } 
     set { mTimeStamp = value; } 
} 
2

E 'lo stesso che non annullabile:

public DateTime? TimeStamp { get; set; }

È possibile sostituire DateTime con DateTime? nel codice di esempio (sembra che il codice non è presente nella parte inferiore del tuo post).

2
private DateTime? mTimeStamp; 

public DateTime? TimeStamp 
{ 
    get { return mTimeStamp; } 
    set { mTimeStamp = value; } 
} 

o, se si utilizza .NET 3.0+

public DateTime? TimeStamp {get;set;} 
Problemi correlati