2010-01-27 17 views
5

मैं पूरे कार्यक्रम में उपयोग किए जाने वाले कार्यक्रम के निष्पादन की शुरुआत में एक टाइमस्टैम्प को निरंतर में सहेजने की कोशिश कर रहा हूं। उदाहरण के लिए:क्या वीबी .NET में गतिशील स्थिरता घोषित करना संभव है?

Const TIME_STAMP = Format(Now(), "hhmm") 

हालांकि, यह कोड एक कंपाइलर त्रुटि उत्पन्न करता है - "निरंतर अभिव्यक्ति आवश्यक है।" क्या इसका मतलब है कि वीबी .NET में सभी स्थिरांकों में फ्लैट, स्थैतिक, हार्ड-कोडित डेटा होना चाहिए? मुझे पता है कि अन्य भाषाओं (जैसे कि जावा) में गतिशील मूल्य के साथ निरंतर प्रारंभ करना संभव है - यह निरंतर बनाता है कि प्रारंभिक असाइनमेंट के बाद आप इसे और नहीं बदल सकते हैं। क्या वीबी .NET में समतुल्य है?

उत्तर

6

जो आप खोज रहे हैं वह केवल पढ़ने योग्य कीवर्ड है। रन टाइम पर टाइम स्टैम्प की गणना की जानी चाहिए और स्थिर नहीं हो सकती है।

ReadOnly TIME_STAMP As String = Format(Now(), "hhmm") 
7

आप इसे Shared ReadonlyConst के बजाय बनाने की जरूरत है - उत्तरार्द्ध केवल संकलन समय स्थिरांक पर लागू होता है। Shared Readonly अभी भी किसी को भी मूल्य बदलने से रोक देगा।

जावा वास्तव में नहीं है है एक अवधारणा Const की तरह है - यह बस देखती है जब static final मान वास्तव में संकलन समय कर रहे हैं स्थिरांक।

1

परिभाषा के अनुसार, स्थिरांक गतिशील नहीं हैं। यदि आप चाहते हैं एक चर एक बार सेट किया है, और नहीं फिर से संशोधित, मेरा मानना ​​है कि आप ReadOnly कीवर्ड के लिए देख रहे हैं ...

Public Shared ReadOnly TIME_STAMP = Format(Now(), "hhmm") 

ध्यान दें कि 'साझा' वैकल्पिक है।

+0

'साझा' के बीच ब्रैसर क्यों हैं? – Pacerier

+0

क्योंकि पुस्तकालय डिज़ाइन किया गया है, इस पर निर्भर करता है कि यह वैकल्पिक है। –

+0

यह भ्रामक है हालांकि – Pacerier

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