首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部访问修饰符

内部访问修饰符
EN

Stack Overflow用户
提问于 2012-07-01 06:27:02
回答 2查看 263关注 0票数 0

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

代码语言:javascript
复制
namespace ConsoleApplication1
{
    internal class ClassA
    {
         internal int dataMember;
    }
}

代码语言:javascript
复制
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”由于其保护级别而无法访问

EN

回答 2

Stack Overflow用户

发布于 2012-07-01 06:32:06

你应该可以。您的确切代码--只是添加一个using System;指令--为我编译。

检查您是否保存了所有文件等,如果存在编译时错误,请将其包含在您的问题中。也许ClassA中还有其他问题(您还没有向我们展示),它阻止了该类的编译?

还要检查它们是否真的在同一个项目中--而不仅仅是在同一个名称空间中。

票数 2
EN

Stack Overflow用户

发布于 2012-07-01 06:38:24

我是这样得到结果的

代码语言:javascript
复制
    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();
    }

也是这样:

代码语言:javascript
复制
    internal class A
    {
        internal int X = 5;
    }
    private void Form2_Load(object sender, EventArgs e)
    {
        A a = new A();
        MessageBox.Show(a.X.ToString());
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11280016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档