2012-05-23 4 views
8

मैं देख रहा हूँ मैं लिख सकते हैं:मैं संरक्षित/निजी स्थैतिक चर के साथ क्या कर सकता हूं?

protected static 
मेरी सी # कक्षा में

(मेरे मामले में, एक aspx.cs)। साथ ही:

private static 

इसका क्या अर्थ है? स्टेटिक हर जगह सुलभ है। संरक्षित/निजी क्यों?

+0

http://stackoverflow.com/questions/135020/advantages-to-using-private-static-methods – CraigTP

+0

मुझे पता है! क्षमा करें, मैं जावा से आ रहा हूँ। वहां चीजें थोड़ा अलग हैं ... – markzzz

उत्तर

18

स्थिर की परिभाषा "हर जगह उपलब्ध नहीं है"। यह एक वैरिएबल है जिसे एपडोमेन के दायरे में घोषित किया गया है।

Access Modifiers इस परिभाषा को न बदलें, लेकिन स्पष्ट रूप से पहुंच के दायरे को प्रभावित करते हैं।

आप एक्सेस संशोधक के साथ static संशोधक को भ्रमित कर रहे हैं। एक स्थैतिक चर को अभी भी परिभाषित सुलभता की आवश्यकता है। आपके उदाहरण में, निजी स्थैतिक चर केवल उस प्रकार के भीतर पहुंच योग्य होते हैं, जिसे परिभाषित किया गया है, संरक्षित प्रकार और किसी व्युत्पन्न प्रकार के भीतर पहुंच योग्य होगा।

बस एक नोट, ध्यान रखें कि आईआईएस (एएसपी.NET अनुप्रयोगों को होस्ट करना) कार्यकर्ता प्रक्रियाओं को पुन: स्थापित करता है, जो उस समय जीवित किसी स्थिर चर वैल्यू को फ्लश करेगा।

0

static इसका मतलब यह नहीं है कि यह हर जगह सुलभ है। दृश्यता को परिभाषित करने के लिए आपको अभी भी protected/private की आवश्यकता है।

1

एक प्रयोग है कि आप निजी स्थिर क्षेत्रों बना सकते हैं, और जनता स्थिर तरीकों का उपयोग कर बेनकाब/गुण (सिंगलटन की तरह कुछ कस्टम व्यवसाय तर्क, आदि लागू करने के लिए)

-1

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

2

यदि आप एक चर के रूप में एक चर घोषित करते हैं तो आप वर्तमान कक्षा के बाहर इसे एक्सेस करने में सक्षम नहीं हैं और यदि संरक्षित के रूप में घोषित किया जाता है तो केवल व्युत्पन्न वर्ग उस चर का उपयोग करने में सक्षम है .. आपके उदाहरण में मूल अर्थ निजी और संरक्षित तो बदल रहा है नहीं यह कोई बात नहीं आप इसे कैसे स्थिर या साधारण एक घोषित ...

class Test 
{ 
    protected static int var1; 
    private static int var2; 
} 
class MainProgram : Test 
{ 
    private static int test; 
    static void Main(string[] args) 
    { 
     Test.var1 = 2; 
     Test.var2 = 5; //ERROR :: We are not able to access var2 because it is private     
    } 
} 

उपरोक्त कोड में आप अगर हम चाहते हैं स्थिर चर केवल वर्तमान कक्षा में पहुँचा जा सकता है तो आप देख सकते हैं इसे एक निजी के रूप में बनाने की जरूरत है।

+3

स्रोत: एमएसडीएन (विभिन्न पृष्ठ)। अपने स्रोत को क्रेडिट करने के लिए हमेशा विनम्र। – tomfanning

0

निजी
प्रकार या सदस्य को केवल उसी कक्षा या संरचना में कोड द्वारा एक्सेस किया जा सकता है।
संरक्षित
प्रकार या सदस्य को केवल उसी वर्ग या संरचना में या व्युत्पन्न कक्षा में कोड द्वारा एक्सेस किया जा सकता है। स्टेटिक संशोधक
स्टेटिक विधियों को एक उदाहरण संदर्भ के बिना बुलाया जाता है।

+0

स्थैतिक तरीकों? मैं चर के बारे में बात कर रहा हूं, तरीकों से नहीं ... – markzzz

+0

@markzzz इससे कोई फर्क नहीं पड़ता, आप उन्हें कैसे एक्सेस करते हैं वही है - एक बस एक विधि कॉल है, दूसरा फ़ील्ड/संपत्ति का उपयोग है। –

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