この記事では、C# で保護を実装する方法を詳しく見ていきます。アクセス修飾子の助けを借りて、パラメーターとクラスのアクセシビリティ レベルを制限できます。 C#
には以下のアクセス修飾子があります。C# では、 protected 修飾子を使用して、アクセスが含まれる型に制限されることを指定できます。また、それを含むクラスから派生した型にも使用できます。 「保護された」という言葉は、それ自体および派生クラスからもアクセスまたは参照できることを意味します。
このメンバーまたは型を使用すると、同じクラスで使用されるコードまたは派生クラスで使用されるコードによってのみアクセスできます。キーワード protected は、private 修飾子と public 修飾子の間にあります。これはプライベート修飾子とほぼ同じですが、メンバーが派生クラスにアクセスできるようになります。子のプロパティへのアクセスを親に許可する場合は、主に protected キーワードを使用します。したがって、保護されたキーワードを使用してロジックを再利用できます。
例:
using System; class Test { protected int _x; private int _y; } class Test1 : Test { public Test1 () { // In this we can access the variable protected int but we cannot access private int variable Console.WriteLine(this._x); } } class Program { static void Main() { Test1 b = new Test1 (); } }
Test と Test1 という 2 つのクラスについて考えます。クラス Test1 は Test から派生します。 Test クラス内を見ると、2 つの int フィールドが宣言されていることがわかります。 1 つは保護され、1 つは非公開です。
クラス B Test1 では、protected int にアクセスできますが、private int にはアクセスできません。したがって、protected 修飾子により、派生クラスで追加のアクセスが可能になります。したがって、 protected キーワードを使用すると、すべての派生クラスを含む protected フィールドにアクセスできます。
クラスを保護することもできます。以下に宣言方法の例を示します
構文:
public class Test { protected class Child { } }
ネストされたクラスでのみ、クラスを保護されたものとして宣言できます。名前空間内で定義することはできません。
以下は、C# で protected を実装する方法を示す例です:
コード:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ProtectedExample { class demo { // String Variable declared as protected protected string name; public void print() { Console.WriteLine("\name is " + name); } } class Program { static void Main(string[] args) // main method { demo d = new demo(); Console.Write("Enter your name:\t"); d.name = Console.ReadLine(); d.print(); Console.ReadLine(); } } }
上記の例では、文字列は保護されていると宣言されています。 protected はそのメンバーを他のクラスから隠すため、このプログラムではエラーが発生します。したがって、子クラスでのみアクセス可能です。
コード:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ProtectedExample { class Demo { protected string name = "Protected Keyword"; protected void Display(string val) { Console.WriteLine("This is " + val); } } class Program : Demo // inheritance { static void Main(string[] args) { Program program = new Program(); // Accessing protected variable Console.WriteLine("This is " + program.name); // Accessing protected function program.Display("protected example"); Console.ReadLine(); } } }
上記の例では、親クラスは保護されたメンバーで構成されています。 Protected は文字列を宣言するために使用されます。現在、子クラスは親クラスから派生し、継承の概念を使用して保護されたメンバーにアクセスします。
出力:
コード:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ProtectedExample { class Parent { private String Private = "My name is John"; // string declared as private protected String Protected = "My name is Dan"; // string declared as protected } class Child : Parent // inheritance { public void Show() { Console.WriteLine(Protected); } } class Program { static int Main(string[] args) // main method { Child child = new Child(); // child object child.Show(); Console.ReadKey(); return 0; } } }
上記の例では、親クラスにはプライベート文字列と保護された文字列が含まれています。子クラスは親クラスから派生します。 Show() は private にはアクセスできませんが、protected にはアクセスできます。メソッドの呼び出しには子クラス オブジェクトが使用されます。 Protected は、クラス外からメンバーがアクセスされないように保護するために使用されます。
出力:
コンストラクターを保護されたものとして宣言することもできます。したがって、任意のコンストラクターを保護されたものとして宣言することで、サブクラスからそれを呼び出すことができます。
構文:
public class TEst : Test1 { public Test() : base() // here we can Call the protected base constructor { } }
保護されたメソッドを呼び出すことはできません。派生クラスから保護されたコンストラクターを呼び出すことができます。
保護された内部の助けを借りて、アクセスが、含まれているクラスから派生した現在の型に制限されるように指定できます。したがって、これにより、同じクラス内のコード、または別のアセンブリに記述された派生クラスによってメンバーと型にアクセスできることが保証されます。
例:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ProtectedExample { class Demo { protected internal string name; // variable is declared as protected internal public void print() { Console.WriteLine("name is " + name); } } class Program { static void Main(string[] args) // main method { Demo d = new Demo(); Console.Write("Enter your name:\t"); // Accepting value in protected internal variable d.name = Console.ReadLine(); d.print(); Console.ReadLine(); } } }
出力:
このタイプの変数には同じクラスで使用されるコードからアクセスできるため、Protected キーワードは便利です。これは、子クラスに親クラスのメンバーにアクセスできるように権限を与えたい場合に便利です。その意味では、コードの再利用性を実現する上で重要です。
そのため、変数で protected を使用し、継承の概念を使用してそれらにアクセスできます。これは、クラス自体またはサブクラスからメンバーにアクセスできる場合に使用できます。
以上がC# で保護されているの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。