ホームページ  >  記事  >  バックエンド開発  >  C# の難しさを 1 つずつ分解します (5): クラスのアクセスの種類

C# の難しさを 1 つずつ分解します (5): クラスのアクセスの種類

黄舟
黄舟オリジナル
2016-12-22 14:11:301217ブラウズ

これら 4 つのカテゴリの違いについて話すときは、アセンブリという概念を説明する必要があります。アセンブリ (Assembly) は、単純にコンパイル後に生成される .dll または .exe ファイルとして理解でき、名前空間と比較すると、クラス ライブラリの論理的な構成形式であり、プログラム クラス ライブラリの物理的な構成形式と呼ぶことができます。 「アセンブリ」について説明します。独自のビルド番号と、それに含まれるすべてのデータおよびオブジェクト タイプの詳細を説明するメタデータが含まれます。一般に、アセンブリには 1 つ以上の名前空間を含めることができます。

パブリック: 他のクラスのメソッドが表示されます。
プライベート: このクラスで定義されたメンバーには、このクラスのメソッドのみがアクセスできます。
保護: このクラスのメンバーには、このクラスのメソッドのみがアクセスできます。クラスのメソッドにのみアクセスできます。
internal: このクラスのメンバーは、このクラスが配置されているアセンブリ内のクラスのメソッドからのみアクセスできます。
protected external: protected と external の結合です。 。
そのため、アクセス レベルは高いものから低いものまで Public>protected external>internal>Protected>Private にする必要があります

クラスのデフォルトの修飾子は内部、クラス内のメンバー変数のデフォルトの修飾子はプライベート、名前空間は修飾子はパブリックであるとみなされます。 msdn で言及されているもう 1 つの点は、継承クラスのアクセス レベルが継承クラスのアクセス レベルを超えることはできないということです。たとえば、内部クラスはプライベート クラスを継承できません。

using System; 

/****************************** 
* Chapter:C#难点逐个击破(五) 
* Author:王洪剑 
* Date:2010-1-15 
* Blog:http://www.51obj.cn/ 
* Email:walkingp@126.com 
* Description:访问修改符 
* ***************************/ 
namespace TestMain 
{ 
public class A 
{ 
public void Alert() 
{ 
} 
} 

internal class B:A 
{ 
internal new void Alert() 
{ 
Console.WriteLine("you"); 
} 
} 

class Program 
{ 
static void Main() 
{ 
B b=new B(); 
b.Alert(); 

} 
} 
}

上記は C# の難易度を 1 つずつ説明したものです (5): クラス アクセス タイプ その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。