首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >默认情况下,类的行为不是内部的

默认情况下,类的行为不是内部的
EN

Stack Overflow用户
提问于 2018-09-10 01:11:40
回答 1查看 40关注 0票数 0

当我在c# windows应用程序项目中定义一个类时,这个类应该在项目内部可用。

因此,我应该能够在表单中声明类的类型,而无需将我的类定义为公共类。

但是我得到了一个可访问性错误,当我的类被重新定义为public,而不是default (应该是程序集内部的)时,这个错误就消失了。

这不是重复的问题。这个问题与我见过的其他可访问性问题不同。

项目中的所有项(窗体、类等)应该属于同一个程序集,那么这是怎么回事呢?

类的默认作用域是不是内部的?研究表明它应该是内部的,所以这个代码应该是有效的……

我得到..。“可访问性不一致。字段类型队列的可访问性低于Form1.Queue”

请参阅下面的代码。

代码语言:javascript
复制
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {

        public Queue Queue;          // <-- PROBLEM LINE

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}

下面是queue的定义;我不认为它真的很重要,但它是由一个评论者请求的;当我将类设置为Public时,所有的问题都解决了。但如果默认作用域应该是内部的,这就没有意义了,它不应该强迫我公开:

代码语言:javascript
复制
namespace WindowsFormsApplication3
{
    class Queue
    {
        private const int DEFAULTQUEUESIZE = 100;
        private int[] data;
        private int head = 0, tail = 0;
        private int numElements = 0;

        public Queue()
        {
            this.data = new int[DEFAULTQUEUESIZE];
        }

        public void Enqueue(int item)
        {
            if (this.numElements == this.data.Length)
            {
                throw new Exception("Queue full");
            }

            this.data[this.head] = item;
            this.head++;
            this.head = this.head % this.data.Length;
            this.numElements++;
        }

        public int Dequeue()
        {
            if (this.numElements == 0)
            {
                throw new Exception("Queue Empty");
            }

            int queueItem = this.data[this.tail];
            this.tail++;
            this.tail = this.tail % this.data.Length;
            this.numElements--;
            return queueItem;
        }


    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-09-10 01:18:52

您的表单被声明为public,并包含Queue类的一个公共字段。因为Queue不是公共的,所以编译器拒绝编译您的代码。如果希望Queue为内部,请将该字段声明为internalprivate

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52246860

复制
相关文章

相似问题

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