0

我在这样的项目中有两个类:

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 回答