C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で使用できるアクセス修飾子の種類は何ですか?


アクセス修飾子は、クラスのメンバーまたはクラス自体のタイプのアクセシビリティの範囲を指定するために使用されます。アクセス修飾子には6つの異なるタイプがあります。

  • 公開

  • プライベート

  • 保護されています

  • 内部

  • 保護された内部

  • プライベート保護

パブリックアクセス修飾子

パブリックアクセス修飾子を実装するオブジェクトには、プロジェクト内のどこからでも制限なくアクセスできます。

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name);
         //Person Name is accessible as it is public
      }
   }
   public class Person{
      public string Name = "Mark";
   }
}

プライベートアクセス修飾子

プライベートアクセス修飾子を実装するオブジェクトは、クラスまたは構造内でのみアクセスできます。その結果、作成されたクラスの外部でそれらにアクセスすることはできません。

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name);
         //Since Name is private it is not accessible in Program class.
         // Error: Person.Name is inaccessible due to its protection level.
      }
   }
   public class Person{
      private string Name = "Mark";
   }
}

保護されたアクセス修飾子

protectedキーワードは、オブジェクトがクラス内およびそのクラスから派生するすべてのクラスでアクセス可能であることを意味します。

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Employee employee = new Employee();
         employee.Print(); //Output: Mark
         Person person = new Person();
         Console.WriteLine(person.Name);
         // Error: Person.Name is inaccessible due to its protection level.
      }
   }
   public class Person{
      protected string Name = "Mark";
   }
   public class Employee : Person{
      public void Print(){
         Console.WriteLine(Name);
      }
   }
}

内部アクセス修飾子

Internalキーワードの場合、アクセスは現在のプロジェクトアセンブリ内で定義されたクラスにのみ制限されます。

プロジェクト1

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name); //Output: Mark
      }
   }
   public class Person{
      internal string Name = "Mark";
   }
}

出力

Mark

プロジェクト2

using MyApplication;
using System;
namespace Project2{
   public class Project2Class{
      public void Print(){
         Person person = new Person();
         Console.WriteLine(person.Name);
         // Error: Person.Name is inaccessible due to its protection level.
      }
   }
}

保護された内部アクセス修飾子-

保護された内部アクセス修飾子は、保護された内部アクセス修飾子の組み合わせです。その結果、保護された内部メンバーにアクセスできるのは、同じアセンブリまたは他のアセンブリの派生クラスのみです。

プロジェクト1

using System;
namespace MyApplication{
   public class Program{
      public static void Main(){
         Person person = new Person();
         Console.WriteLine(person.Name); //Output: Mark
      }
   }
   public class Person{
      protected internal string Name = "Mark";
   }
}

出力

Mark

プロジェクト2

using MyApplication;
using System;
namespace Project2{
   public class Project2Class : Person{
      public void Print(){
         Console.WriteLine(Name); //Output: Mark
      }
   }
}

プライベート保護アクセス修飾子

private protected access修飾子は、privateキーワードとprotectedキーワードの組み合わせです。包含クラス内または包含クラスから派生したクラス内のメンバーにアクセスできますが、同じアセンブリ(プロジェクト)内でのみアクセスできます。したがって、別のアセンブリからアクセスしようとすると、エラーが発生します。この修飾子は、C#バージョン7.2以降で有効です。


  1. C#ASP.NET WebAPIのさまざまな種類のフィルターは何ですか?

    フィルタは、WebApiFrameworkリク​​エスト処理のさまざまなレベルで追加のロジックを挿入するために使用されます。フィルタは、横断的関心事(ロギング、承認、およびキャッシング)の方法を提供します。フィルタは、宣言的またはプログラム的な方法でアクションメソッドまたはコントローラに適用できます。以下は、Web API C#のフィルターの種類です。 認証フィルター − 認証フィルターは、ユーザーの詳細を認証するのに役立ちます。認証フィルターでは、ユーザーの信頼性をチェックするためのロジックを記述します。 認証フィルター − 承認フィルターは、ユーザーアクセスのチェックを担当しま

  2. Pythonのさまざまな種類の引用符とは何ですか?

    引用記号は、Pythonで文字列オブジェクトを作成するために使用されます。 Pythonは、一重引用符、二重引用符、および三重引用符で囲まれた文字列を認識します。文字列リテラルは、文字のシーケンスを一重引用符(hello)、二重引用符( hello)、または三重引用符(helloまたは hello )で囲むことによって記述されます。 >>> var1='hello' >>> var1 'hello' >>> var2="hello" >>> var2 'hello