次のような新しいオブジェクトを作成する場合、デフォルトでどのアクセス修飾子が設定されますか?
Object objectA = new Object();
次のような新しいオブジェクトを作成する場合、デフォルトでどのアクセス修飾子が設定されますか?
Object objectA = new Object();
どのメンバーも、常に最も制限の厳しいメンバーを利用できます。したがって、この場合のアクセシビリティobjectA
はprivate
. (インスタンス変数であると仮定します。ローカル変数にはアクセス規則がないため、意味がありません。)
したがって、この:
class Foo
{
Object objectA = new Object();
}
これと同等です:
internal class Foo
{
private Object objectA = new Object();
}
「デフォルトで最もプライベート」とは、型のアクセシビリティがコンテキストに依存することを意味します。これ:
class Outer
{
class Nested
{
}
}
これと同等です:
internal class Outer
{
private class Nested
{
}
}
...ネストされていないプライベートクラスを持つことはできないためです。
明示的なアクセス修飾子を追加すると、それがない場合よりもプライベートなものを作成できる場所が1 つだけあり、それはプロパティ宣言にあります。
public string Name { get; set; } // Both public
public string Name { get; private set; } // public get, private set
void Foo()
{
// private in method scope
Object objectA = new Object();
}
class Bar()
{
// private in class scrope
Object objectA = new Object();
}
デフォルトではプライベートです。
َََََ
クラスのメンバーとして: private
.
メソッドの本体内で宣言されたローカル変数である場合、そのメソッドの外部ではアクセスできません。しかし、あなたはすでにそれを知っていたと思います。
ネストされたクラスと構造体を含む、クラス メンバーと構造体メンバーの場合、private が既定です。
クラスと構造体の場合 - internal がデフォルトです
詳細については、 MSDNを参照してください。
クラス/タイプ自体はデフォルトで「内部」になります。作成するオブジェクトは、デフォルトで「プライベート」になります。
クラスと構造体はデフォルトで internal として宣言されています!
詳細はこちら
class のアクセス指定子は internal です。
変数のアクセス指定子は非公開です。