2010-05-28 7 views
6

मैं System.Web.Configuration.CompilationSection के लिए मेटाडाटा देख रहा था, और TimeSpan BatchTimeout संपत्ति पर निम्न विशेषता देखा:क्यों 10675199.02: 48: 05.4775807 टाइमस्पेन संकलन के लिए अधिकतम अधिकतम?

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

कोई समझा सकते हैं क्यों यह अनुमति दी अधिकतम मूल्य है? टाइमस्पैन की ऊपरी सीमा है, तो एक और मूल्य सत्यापन क्यों होगा, और यह संख्या क्यों?

उत्तर

7

यह TimeSpan का अधिकतम मूल्य है। TimeSpan.MaxValue के लिए हवाला देते हुए MSDN:

इस फ़ील्ड का मान बराबर Int64.MaxValue को टिक्स है। इस मान का स्ट्रिंग प्रस्तुति सकारात्मक 10675199.02: 48: 05.4775807 है।

8

मुझे लगता है कि स्वीकृत उत्तर पूरी तरह से प्रश्न का उत्तर नहीं देता है। यह वास्तव में वही अधिकतम मूल्य है। और यह कोई संयोग नहीं है।

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

और नहीं कुछ की तरह:

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

लेकिन क्यों परिभाषा है?

अच्छी तरह से कहें, ऐसा इसलिए है क्योंकि गुण दूसरी प्रकार की परिभाषाओं की अनुमति नहीं देते हैं। वे केवल संकलन समय स्थिरांक की अनुमति देते हैं, क्योंकि वे मेटा डेटा हैं जो असेंबली में संकलित होते हैं।

+2

इस पर विस्तार करने के लिए, यहां बताया गया है कि दोनों को कैसे परिभाषित किया गया है: 'सार्वजनिक स्थैतिक रीडोनली टाइमस्पैन शून्य = नया टाइमस्पैन (0); ',' सार्वजनिक स्थैतिक रीडोनली टाइमस्पैन मैक्सवेल्यू = नया टाइमस्पैन (Int64.MaxValue);'। वे एक प्रकार के उदाहरण हैं जो संकलन समय पर उपलब्ध नहीं हैं। –