内部访问修饰符

时间:2012-07-01 06:27:02

标签: c#

我在这样的项目中有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类及其数据成员

使用了内部访问修饰符

虽然可以在类b的主要内部创建类A的对象,但为什么我无法使用同一程序集中的内部访问说明符访问其数据成员?

以下是它在VS 2010中提供的错误:

  

'ConsoleApplication1.ClassA.dataMember'由于其保护级别而无法访问

2 个答案:

答案 0 :(得分:2)

你应该能够。您的确切代码 - 只需添加using System;指令 - 即可为我编译。

检查您是否已实际保存了所有文件等 - 如果出现编译时错误,请在问题中加入。也许ClassA中有一些其他错误(你还没有向我们展示),这会阻止该类编译?

同时检查这些是否在同一个项目中 - 而不仅仅是在同一个名称空间中。

答案 1 :(得分: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());
    }