2012-06-22 25 views
5

Tôi có một phương pháp xây dựng tương tự như sau:Tại sao tôi mất mili giây của một DateTime khi nó được chuyển đến một phương thức nhận DateTime không bị lỗi?

public class Foo 
{ 
public Foo (DateTime? startFrom) 
     { 
      _startFrom = startFrom; 
     } 
} 

Và tôi gọi phương thức constructor này như thế này:

var context = new Foo(new DateTime(2012, 7, 15, 11, 2, 10, 2)); // 2 miliseconds 

Nhưng khi tôi gỡ lỗi nó, tôi thấy rằng 002 mili giây được thiết lập để 000 khi được truyền cho hàm khởi tạo mặc định, là tham số Nullable DateTime.

Tôi có bị mất một phần nghìn giây của một DateTime khi tôi chuyển nó như một tham số cho một phương thức nhận Nullable DateTime không?

+0

Bạn đang xem nội dung của DateTime như thế nào? Trình gỡ lỗi sử dụng DateTime.ToString() không hiển thị mili giây. Nếu bạn mở rộng đối tượng trong trình gỡ rối, bạn sẽ thấy mili giây. –

Trả lời

4

Không, điều đó không bình thường - và tôi thực sự nghi ngờ đây là vấn đề chẩn đoán.

Khi bạn gỡ lỗi thông qua mã, tôi nghi ngờ bạn đang sử dụng cửa sổ xem sẽ không hiển thị mili giây trong biểu diễn chuỗi của nó. Mở rộng biến đó và tôi chắc chắn bạn sẽ thấy thành phần mili giây được giữ nguyên.

(Nếu đó là không trường hợp, vui lòng cung cấp một chương trình ngắn nhưng đầy đủ mà chứng tỏ vấn đề, chứ không phải chỉ là những đoạn bạn đã được hiển thị.)

0

Không nó không và nó không phải là trường hợp, Cửa sổ gỡ lỗi không hiển thị mili giây, đó là tất cả.

Mở giải pháp VS2010 mới và không thể tái tạo những gì bạn nói. Khi nhìn vào phần mili giây, giá trị là 2!

1

Tôi vừa thử và tôi nhận được mili giây. Bạn xác minh điều này như thế nào?

tôi chạy nó trong chế độ gỡ lỗi và kiểm tra context._startFrom.Millisecond của bạn nó có giá trị 2.

Bạn đang dựa vào ToString() đầu ra? Điều đó không theo mặc định hiển thị mili giây.

Các vấn đề liên quan