एक सूक्ष्म लेकिन महत्वपूर्ण अंतर यह है कि consts
संकलन समय पर मूल्यांकन किया जाता है, जबकि statics
का मूल्यांकन रन टाइम पर किया जाता है। इसका संस्करणांकन पर एक महत्वपूर्ण प्रभाव पड़ता है। उदाहरण के लिए, मान लीजिए आप लिखें:
public const int MaxValue = 100;
आप संकलित करके उसे अपने विधानसभा (विधानसभा ए) जहाज। फिर कोई और एक असेंबली (असेंबली बी) लिखता है जो मैक्सवेल्यू का संदर्भ देता है। इस मामले में, मूल्य 100 को उनकी असेंबली के साथ-साथ आपकी भी संकलित किया जाता है।
यदि आप लिखा था इस:
public static readonly int MaxValue = 100;
फिर उनके विधानसभा में संदर्भ सिर्फ इतना है कि, एक संदर्भ रहेगा। जब कोई विधानसभा बी चलाता है, तो मूल्य 100 से असेंबली, असेंबली ए
उदाहरण के लिए, सरल पैचिंग परिदृश्यों को प्रभावित कर सकता है।यदि आप एक अद्यतन असेंबली ए जारी करते हैं जहां मैक्सवैल्यू को 200 के रूप में घोषित किया जाता है, और उपयोगकर्ता पिछले संस्करण पर उस संस्करण की प्रतिलिपि बनाता है (लेकिन असेंबली बी को पुन: संकलित नहीं करता है), तो पहले परिदृश्य में असेंबली बी चालू रहेगा जैसे मैक्सवेल्यू 100 थे, क्योंकि यह const
मान है जिसे असेंबली बी में संकलित किया गया था। दूसरे परिदृश्य में, असेंबली बी नए मान को उठाएगा क्योंकि यह रनटाइम पर गैर-कॉन्स static
चर लोड करता है।
ऐसी कोई चीज नहीं है जो एक स्थिर चर है। –