2013-02-25 15 views
19

मैं .net में एक datetime निरंतर बनाने के लिए चाहते हैं, लेकिन त्रुटि संदेश.NET में डेटाटाइम निरंतर बनाने की अनुमति क्यों नहीं है?

const DateTime dt = Convert.ToDateTime("02/02/2014"); 

'System.DateTime' हो रही स्थिरांक घोषित नहीं किया जा सकता है।

+2

आपको स्थिर होने की आवश्यकता क्यों है? – levelnis

+3

वीबीएनईटी में: 'आज का समय दिनांक के रूप में = # 2/25/2013 # ' –

उत्तर

16

डेटटाइम सी # भाषा में मूल प्रकार नहीं है - यह नेट पुस्तकालयों से एक संरचना है।

सी # में, आप केवल मूल भाषा प्रकारों से कॉन्स बना सकते हैं, और आप उन्हें केवल उन मानों के साथ प्रारंभ कर सकते हैं जिन्हें संकलित समय पर गणना की जा सकती है। डेटटाइम.अब संकलन समय पर गणना नहीं की जा सकती है।

(केवल संदर्भ के प्रकार आप एक स्थिरांक के साथ उपयोग कर सकते हैं एक स्ट्रिंग है, और है कि क्योंकि तार विशेष रूप से नियंत्रित किया जाता है है।)

http://msdn.microsoft.com/en-gb/library/e6w8fe1b%28v=vs.71%29.aspx

+0

मैं यह भी जोड़ दूंगा कि' डेटटाइम.अब 'स्वयं में' कॉन्स्ट 'अभिव्यक्ति नहीं है। कॉन्स वैल्यू केवल अन्य कॉन्स एक्सप्रेशन, जैसे कि शाब्दिक से असाइन किए जा सकते हैं। – Dai

+0

धन्यवाद, इसमें शामिल करने के लिए अपडेट किया गया है और तारों के बारे में कुछ भी है। –

26

देखें यहां तक ​​कि अगर आप एक DateTime स्थिरांक के रूप में घोषित कर सकता है (जो आप नहीं कर सकते, जैसा कि अन्य उत्तरों ने इंगित किया है) आपको संकलन-समय स्थिर का मान मानना ​​होगा - और DateTime.Now निश्चित रूप से संकलन-समय स्थिर नहीं है।

यह हालांकि मान्य है:

static readonly DateTime dt = DateTime.Now(); 

ध्यान दें कि यह हो जाएगा "जो कुछ समय प्रकार के लिए प्रकार प्रारंभकर्ता भाग गया" यद्यपि। यह शायद ही कभी एक विशेष रूप से उपयोगी मूल्य है जब तक कि आप यह सुनिश्चित न करें कि यह स्टार्ट-अप पर शुरू हुआ है, यह मानते हुए कि आप मापने की कोशिश कर रहे हैं ...

+0

कॉन्स्ट के विकल्प के रूप में पढ़ने के लिए उपयोग करने में सक्षम होने के बारे में अच्छा बिंदु। –

+2

यह ध्यान देने योग्य है कि 'VB.NET' 'Const' का भी संकलन समय पर' स्थिर रीडोनली' में अनुवाद किया जाएगा। तो यह सिर्फ एक छद्म स्थिरता है: 'आज का समय तिथि के रूप में = # 2/25/2013 # ' –

+0

@TimSchmelter: केवल उन मानों के लिए जिन्हें आईएल में' शाब्दिक 'का उपयोग करके प्रदर्शित नहीं किया जा सकता है। यदि आप 'सार्वजनिक कॉन्स्ट्रेंस बार के रूप में पूर्णांक = 20' का उपयोग करते हैं जो आईएल में' फ़ील्ड सार्वजनिक स्थैतिक शाब्दिक int32 बार = int32 (0x14) 'के रूप में समाप्त होता है। –

संबंधित मुद्दे