C# Language
एक्सेस मॉडिफायर
खोज…
टिप्पणियों
यदि पहुँच संशोधक छोड़ा गया है,
- कक्षाएं डिफ़ॉल्ट रूप से
internal
- विधियाँ
private
द्वारा होती हैं - गेटर्स और सेटर्स संपत्ति के संशोधक को विरासत में देते हैं, डिफ़ॉल्ट रूप से यह
private
संपत्तियों के public string someProperty {get; private set;}
पर एक्सेस संशोधक केवल पहुंच को प्रतिबंधित कर सकते हैं, इसे चौड़ा नहीं कर सकते: public string someProperty {get; private set;}
जनता
public
खोजशब्द एक वर्ग बनाता है (नेस्टेड कक्षाओं सहित), संपत्ति, विधि या क्षेत्र जो प्रत्येक उपभोक्ता के लिए उपलब्ध है:
public class Foo()
{
public string SomeProperty { get; set; }
public class Baz
{
public int Value { get; set; }
}
}
public class Bar()
{
public Bar()
{
var myInstance = new Foo();
var someValue = foo.SomeProperty;
var myNestedInstance = new Foo.Baz();
var otherValue = myNestedInstance.Value;
}
}
निजी
private
कीवर्ड केवल क्लास के अंदर उपयोग के लिए गुण, विधियाँ, फ़ील्ड और नेस्टेड क्लास को चिह्नित करता है:
public class Foo()
{
private string someProperty { get; set; }
private class Baz
{
public string Value { get; set; }
}
public void Do()
{
var baz = new Baz { Value = 42 };
}
}
public class Bar()
{
public Bar()
{
var myInstance = new Foo();
// Compile Error - not accessible due to private modifier
var someValue = foo.someProperty;
// Compile Error - not accessible due to private modifier
var baz = new Foo.Baz();
}
}
अंदर का
आंतरिक खोजशब्द एक वर्ग (नेस्टेड कक्षाओं सहित), संपत्ति, विधि या क्षेत्र को एक ही विधानसभा में प्रत्येक उपभोक्ता के लिए उपलब्ध कराता है:
internal class Foo
{
internal string SomeProperty {get; set;}
}
internal class Bar
{
var myInstance = new Foo();
internal string SomeField = foo.SomeProperty;
internal class Baz
{
private string blah;
public int N { get; set; }
}
}
विधानसभा असेंबली में कोड जोड़कर कोड का उपयोग करने के लिए एक परीक्षण असेंबली को अनुमति देने के लिए इसे तोड़ा जा सकता है। फाइल:
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleTo("MyTests")]
संरक्षित
केवल एक ही वर्ग और व्युत्पन्न वर्गों के अंदर उपयोग के लिए protected
कीवर्ड चिह्न फ़ील्ड, विधियाँ गुण और नेस्टेड वर्ग:
public class Foo()
{
protected void SomeFooMethod()
{
//do something
}
protected class Thing
{
private string blah;
public int N { get; set; }
}
}
public class Bar() : Foo
{
private void someBarMethod()
{
SomeFooMethod(); // inside derived class
var thing = new Thing(); // can use nested class
}
}
public class Baz()
{
private void someBazMethod()
{
var foo = new Foo();
foo.SomeFooMethod(); //not accessible due to protected modifier
}
}
संरक्षित आंतरिक
एक ही विधानसभा या किसी अन्य विधानसभा में व्युत्पन्न वर्गों के अंदर उपयोग के लिए protected internal
कीवर्ड फ़ील्ड, विधियों, गुणों और नेस्टेड वर्गों को चिह्नित करता है:
विधानसभा 1
public class Foo
{
public string MyPublicProperty { get; set; }
protected internal string MyProtectedInternalProperty { get; set; }
protected internal class MyProtectedInternalNestedClass
{
private string blah;
public int N { get; set; }
}
}
public class Bar
{
void MyMethod1()
{
Foo foo = new Foo();
var myPublicProperty = foo.MyPublicProperty;
var myProtectedInternalProperty = foo.MyProtectedInternalProperty;
var myProtectedInternalNestedInstance =
new Foo.MyProtectedInternalNestedClass();
}
}
सभा २
public class Baz : Foo
{
void MyMethod1()
{
var myPublicProperty = MyPublicProperty;
var myProtectedInternalProperty = MyProtectedInternalProperty;
var thing = new MyProtectedInternalNestedClass();
}
void MyMethod2()
{
Foo foo = new Foo();
var myPublicProperty = foo.MyPublicProperty;
// Compile Error
var myProtectedInternalProperty = foo.MyProtectedInternalProperty;
// Compile Error
var myProtectedInternalNestedInstance =
new Foo.MyProtectedInternalNestedClass();
}
}
public class Qux
{
void MyMethod1()
{
Baz baz = new Baz();
var myPublicProperty = baz.MyPublicProperty;
// Compile Error
var myProtectedInternalProperty = baz.MyProtectedInternalProperty;
// Compile Error
var myProtectedInternalNestedInstance =
new Baz.MyProtectedInternalNestedClass();
}
void MyMethod2()
{
Foo foo = new Foo();
var myPublicProperty = foo.MyPublicProperty;
//Compile Error
var myProtectedInternalProperty = foo.MyProtectedInternalProperty;
// Compile Error
var myProtectedInternalNestedInstance =
new Foo.MyProtectedInternalNestedClass();
}
}
एक्सेस संशोधक आरेख
यहाँ सभी एक्सेस मॉडिफ़ायर venn आरेखों में हैं, अधिक सीमित करने से अधिक सुलभ तक:
पहुँच संशोधक | आरेख |
---|---|
निजी | |
अंदर का | |
संरक्षित | |
संरक्षित आंतरिक | |
जनता |
नीचे आपको अधिक जानकारी मिल सकती है।