2010-05-28 19 views
6

tôi đang tìm kiếm tại các siêu dữ liệu cho System.Web.Configuration.CompilationSection, và nhận thấy các thuộc tính sau trên TimeSpan BatchTimeout tài sản:Tại sao 10675199.02: 48: 05.4775807 Thời gian tối đa cho phần biên dịch?

[TimeSpanValidator(MinValueString = "00:00:00", 
MaxValueString = "10675199.02:48:05.4775807")] 

một ai đó có thể giải thích tại sao điều này là giá trị tối đa cho phép? Bản thân TimeSpan có giới hạn trên, vậy tại sao lại có một xác nhận giá trị khác, và tại sao lại là số này?

Trả lời

7

Đó chính xác là giá trị tối đa là TimeSpan. Trích dẫn MSDN cho TimeSpan.MaxValue:

Giá trị của lĩnh vực này là tương đương để Int64.MaxValue bọ ve. Biểu diễn chuỗi của giá trị này là tích cực 10675199.02: 48: 05.4775807.

8

Tôi nghĩ câu trả lời được chấp nhận không trả lời đầy đủ câu hỏi. Nó thực sự là cùng một giá trị tối đa. Và không phải ngẫu nhiên. Nhưng tại sao là định nghĩa:

[TimeSpanValidator(MinValueString = "00:00:00", MaxValueString = "10675199.02:48:05.4775807")] 

và không cái gì đó như:

[TimeSpanValidator(TimeSpan.Zero, TimeSpan.MaxValue)] 

?

Cũng chỉ cần đặt, đó là vì Thuộc tính không cho phép loại định nghĩa thứ hai. Chúng chỉ cho phép các hằng số biên dịch thời gian, vì chúng là các dữ liệu meta được biên dịch vào trong assembly.

+2

Để mở rộng về điều này, đây là cách hai được xác định: 'public static readonly TimeSpan Zero = new TimeSpan (0);', 'public static readonly TimeSpan MaxValue = new TimeSpan (Int64.MaxValue);'. Chúng là các thể hiện của một kiểu không có sẵn trong thời gian biên dịch. –

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