एक स्थिर वर्ग को तत्काल नहीं किया जा सकता है। कहीं भी कक्षा में कोई "संदर्भ" नहीं है (प्रकार की जानकारी को छोड़कर)। जब सीएलआर असेंबली लोड करता है तो इसकी विधियां स्मृति में लोड होती हैं। आप एक प्रतिनिधि बना सकते हैं जो इन तरीकों में से किसी एक को इंगित करता है, लेकिन यह कक्षा के उदाहरण के संदर्भ में संदर्भ नहीं देता है। यह सिर्फ एक समारोह के लिए एक सूचक है।
उदाहरण के लिए, इस कोड को देखो:
class ObjectWrapper
{
Object obj = new Object();
}
static void Main(string[] args)
{
ObjectWrapper wrapper = new ObjectWrapper();
...
}
मुख्य विधि एक ObjectWrapper वर्ग का एक उदाहरण बनाता है। यह उदाहरण ढेर पर रहता है।
ऑब्जेक्टवापर उदाहरण के अंदर, कक्षा ऑब्जेक्ट का एक उदाहरण है जो ढेर पर रहता है। इस वर्ग का संदर्भ उदाहरण के अंदर है, इसलिए मुझे लगता है कि आप संदर्भ के बारे में सोच सकते हैं "ढेर में रहना"। भी
class Singleton
{
static readonly instance = new Singleton();
}
सिंगलटन वस्तु का उदाहरण ढेर पर रहता है,:
अब, यह निम्न कोड को की तुलना करें। हालांकि, संदर्भ एक स्थिर संदर्भ है। यह वैश्विक या "रूट" संदर्भों की सूची में सीएलआर द्वारा बनाए रखा जाता है।
अब इस स्थिर वर्ग को देखो:
class ObjectWrapper
{
Object obj = new Object();
}
static class HelperMethods
{
static int DoSomethingUseful(ObjectWrapper wrapper1)
{
ObjectWraper wrapper2 = wrapper1;
// code here
}
}
HelperMethods एक स्थिर वर्ग है। आप हेल्पर मोड्स क्लास को तुरंत चालू नहीं कर सकते हैं। ढेर पर इस वर्ग से कोई वस्तु नहीं हो सकती है। हालांकि, DoSomethingUseful विधि में, स्टैक पर ऑब्जेक्टवापर वर्ग के उदाहरण के दो संदर्भ हैं। एक में पारित किया जाता है, और विधि के अंदर एक घोषित किया जाता है।
मुझे इस प्रश्न के किसी भी हिस्से को समझ में नहीं आता है। "इसका मूल्य" और "इसके रेफरी" से आपका क्या मतलब है? –
मुझे उम्मीद है कि वह डेटा सदस्यों से निष्पादन योग्य कोड को अलग करने के तरीके के बारे में बात कर रहा है। –
अन्य मुद्दों के अलावा, यह "इसकी" है। – jason