Static readonly या const C# में: 2025 में क्या चुनें?

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: शाश्वत बहस जो अपनी प्रासंगिकता नहीं खोती

\n\n

एक स्थिति की कल्पना करें: आप C# में कोड लिख रहे हैं और आपको एक ऐसा मान घोषित करना है जो बदलना नहीं चाहिए। पहला विचार — const। दूसरा — static readonly। और तीसरा — "असल में, क्या अंतर है?"।

\n\n

यह प्रश्न Stack Overflow पर सबसे लोकप्रिय में से एक है। नौसिखियों से लेकर वरिष्ठ डेवलपर्स तक, हज़ारों डेवलपर्स बहस करते रहते हैं कि क्या बेहतर है। और 2025 में, .NET और C# 13 के नए संस्करणों के आने के साथ, यह विकल्प और भी दिलचस्प हो गया है।

\n\n

इस लेख में, हम एक बार और हमेशा के लिए समझेंगे कि const का उपयोग कब करें और static readonly का कब। आप न केवल सिद्धांत सीखेंगे, बल्कि स्पष्ट नियम भी प्राप्त करेंगे जिन्हें आप आज ही लागू कर सकते हैं।

\n\n

मॉडिफायर के पीछे क्या छिपा है?

\n\n

const: कठोर स्थिरांक

\n

C# में const मॉडिफायर का शाब्दिक अर्थ है "पत्थर पर खुदा हुआ" मान। यह संकलन चरण पर ज्ञात होना चाहिए। कंपाइलर स्थिरांक के मान को सीधे कोड में हर जगह डाल देता है जहाँ इसका उपयोग किया जाता है।

\n\n
public class MathConstants\n{\n    public const double Pi = 3.14159;\n    public const int DaysInWeek = 7;\n    public const string AppName = "MyApp";\n}
\n\n

ध्यान दें: const हमेशा अंतर्निहित रूप से static होता है। आप static const नहीं लिख सकते — कंपाइलर एक त्रुटि देगा।

\n\n

static readonly: लचीली अपरिवर्तनीयता

\n

static readonly मॉडिफायर एक ऐसा फ़ील्ड है जो एक बार आरंभीकृत होता है और फिर कभी नहीं बदलता। मुख्य अंतर: मान प्रोग्राम निष्पादन के दौरान गणना किया जा सकता है।

\n\n
public class AppSettings\n{\n    public static readonly DateTime ReleaseDate = new DateTime(2025, 1, 15);\n    public static readonly Guid InstanceId = Guid.NewGuid();\n    public static readonly string ConfigPath = GetConfigPath();\n    \n    private static string GetConfigPath()\n    {\n        return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "config.json");\n    }\n}
\n\n

मुख्य अंतर: त्वरित तुलना के लिए तालिका

\n\n

आइए सब कुछ एक स्पष्ट तालिका में व्यवस्थित करें:

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
विशेषताconststatic readonly
आरंभीकरण का समयसंकलननिष्पादन (स्थैतिक कंस्ट्रक्टर)
अनुमत प्रकारकेवल आदिम (int, double, string, enum, bool)कोई भी प्रकार (संदर्भ प्रकार सहित)
मेमोरीमान प्रत्येक असेंबली में कॉपी किया जाता हैमेमोरी में एकल संदर्भ
संस्करण अनुकूलतालाइब्रेरी अपडेट करने में समस्याएँसुरक्षित
प्रदर्शनअधिकतम (संकलन चरण पर प्रतिस्थापन)पहली पहुँच पर थोड़ा ओवरहेड
\n\n

const कब चुनें?

\n\n

const का उपयोग करें जब:

\n
    \n
  • मान बिल्कुल अपरिवर्तनीय है — गणितीय स्थिरांक (π, e), सप्ताह में दिनों की संख्या, भौतिक स्थिरांक।
  • \n
  • मान संकलन चरण पर उपलब्ध होना चाहिए — उदाहरण के लिए, विशेषताओं, switch/case, डिफ़ॉल्ट पैरामीटर के लिए।
  • \n
  • आप पूरे कोड को नियंत्रित करते हैं — और सुनिश्चित हैं कि लाइब्रेरी को अलग से अपडेट नहीं किया जाएगा।
  • \n
\n\n
// const के लिए आदर्श\npublic class Physics\n{\n    public const double SpeedOfLight = 299792458; // मी/से\n    public const double GravitationalConstant = 6.67430e-11; // मी³/(किग्रा·से²)\n}\n\n// विशेषता में उपयोग —                

ब्लॉग

पुस्तक अनुशंसाएँ