2012-01-12 9 views
10

cách tạo thuộc tính setter và getter cho datetime rỗng. ví dụ:Nullable DateTime?

private DateTime mTimeStamp; 

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

Thuộc tính không thể hỗ trợ setter và getter hoặc tôi tuyên bố công khai?

private DateTime? mTimeStamp; 

public DateTime TimeStamp 
{ 

} 

Trả lời

17

Bạn chỉ có thể làm điều này thay vì:

public DateTime? TimeStamp { get; set; } 

Nếu bạn đã gặp rắc rối với trình biên dịch có lẽ là do bạn chỉ thay đổi một trong những phần liên quan - một trong hai private biến thành viên hoặc kiểu dữ liệu của thuộc tính. Họ cần phải phù hợp, tất nhiên, và tài sản tự động xử lý mà cho bạn độc đáo.

EDIT Chỉ cần tiếp tục làm rõ, DateTime? không được trang trí đơn thuần với một thuộc tính ? - đó là hoàn toàn khác biệt so vớiDateTime. DateTime? là viết tắt của Nullable<DateTime>, là loại chung (Nullable<T>) cung cấp hỗ trợ không có giá trị cho các loại không tham chiếu bằng cách bao gồm thông số chung T, là struct.

+0

+1 cho "họ cần phải phù hợp" và các thuộc tính tự động xử lý mà độc đáo. – phoog

2

Bạn sẽ có thể làm cho một DateTime nullable theo cách này:

private DateTime? mTimeStamp; 

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

Bạn có thể sử dụng sửa đổi lần này trên các loại khác nữa. Đọc ở đây: http://msdn.microsoft.com/en-us/library/1t3y8s4s%28v=VS.100%29.aspx

3

Bạn có thể tạo các tài sản trong cùng một cách như một bình thường DateTime tài sản:

public DateTime? TimeStamp { get; set; } 
2

Một DateTime nullable là một loại rời rạc từ một DateTime thường xuyên và có thể được sử dụng như bất kỳ loại khác . Vì vậy, mã của bạn sẽ là:

private DateTime? mTimeStamp; 

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

Nó giống như không nullable:

public DateTime? TimeStamp { get; set; }

Bạn có thể thay DateTime với DateTime? trong mã mẫu hàng đầu của bạn (trông giống như đang mất tích ở dưới cùng của bài viết của bạn).

2
private DateTime? mTimeStamp; 

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

hoặc, nếu bạn đang sử dụng .net 3.0+

public DateTime? TimeStamp {get;set;}