読者です 読者をやめる 読者になる 読者になる

C#_アクセシビリティに一貫性がありません。低く設定されています。の意味

C# プログラム

 

アクセシビリティに一貫性がありません。
hogeアクセシビリティは fuga よりも低く設定されています。

のエラーは、

アクセス修飾子( public・protected・private )がおかしいよ、という意味。

アクセシビリティ:アクセスできる度合い。
accessibility:近づきやすさ、動かされやすいこと、影響を受けやすいこと

 

以上。

 

↓ サンプルコード。

このコードはNG

private struct hoge{
    public string Num;
    public string Name;
    public int Old;
}
//hL_ でエラーとなる。
public List<hoge> hL_ = new List<hoge>();
private void button1_Click(object sender, EventArgs e)
{
    hL_.Add(new hoge { Num="E08", Name="Alice", Old=21 });
    hL_.Add(new hoge { Num = "A12", Name = "Bob", Old = 27 });
}

hoge 型 がprivate なのに、hoge型 を指定 List が public なので。

別クラスから List にアクセスOK としているのに、
使用 (指定) している肝心な hoge 型 は別クラスからアクセスNG とある。
ここで齟齬が発生するからエラーとなる。
hoge へアクセスできなければ List の型が不明になってしまう。

 

これが

public struct hoge{
    略
}
private List<hoge> hL_ = new List<hoge>();

なら問題なし。
hL_ は自クラスからしかアクセスできないが、
hgoe 型は自クラスを 含んだどこからでもアクセス可。