0

次のようなプロジェクトに2つのクラスがあります。

namespace ConsoleApplication1
{
    internal class ClassA
    {
         internal int dataMember;
    }
}

namespace ConsoleApplication1
{
    class ClassB 
    {
        static void Main(string[] args)
        {
            ClassA c = new ClassA();
            Console.Write(c.dataMember); //Cannot access??
        }
    }
}

クラスAとそのデータメンバーに内部アクセス修飾子を使用しました

クラス A のオブジェクトはクラス b のメイン内で作成できますが、同じアセンブリ内で内部アクセス指定子を使用してそのデータ メンバーにアクセスできないのはなぜですか?

VS 2010 で発生するエラーは次のとおりです。

「ConsoleApplication1.ClassA.dataMember」は、保護レベルが原因でアクセスできません

4

2 に答える 2

2

できるはずです。あなたの正確なコード -using System;ディレクティブを追加するだけ - がコンパイルされます。

実際にすべてのファイルなどを保存したことを確認してください。コンパイル時にエラーが発生した場合は、それを質問に含めてください。おそらく、そのクラスのコンパイルを妨げている何か他の問題がありClassAますか?

また、これらが同じ名前空間だけでなく、実際に同じプロジェクトにあることも確認してください

于 2012-07-01T06:32:06.837 に答える
0

私はこの方法で結果を得ています:

    internal class A
    {
        internal int X = 5;
    }
    static class B
    {
        public static void Show()
        {
            A a = new A();
            MessageBox.Show(a.X.ToString());
        }
    }
    private void Form2_Load(object sender, EventArgs e)
    {
        B.Show();
    }

また、この方法:

    internal class A
    {
        internal int X = 5;
    }
    private void Form2_Load(object sender, EventArgs e)
    {
        A a = new A();
        MessageBox.Show(a.X.ToString());
    }
于 2012-07-01T06:38:24.397 に答える