第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

默認情況下,類不表現(xiàn)為內(nèi)部

默認情況下,類不表現(xiàn)為內(nèi)部

C#
森林海 2022-01-09 16:20:32
當我在我的 c# windows 應用程序項目中定義一個類時,該類應該在項目內(nèi)部可用。所以我應該能夠在我的表單中聲明那種類型的類,而無需將我的類定義為公共類。但是我遇到了一個可訪問性錯誤,當我的類被重新定義為公共而不是默認值(它應該是程序集的內(nèi)部)時,它就會消失。這不是一個重復的問題。這個問題與我見過的其他可訪問性問題不同。我項目中的所有項目(表單、類等)都應該屬于同一個程序集,那么發(fā)生了什么?類的默認范圍是否是內(nèi)部的?研究表明它應該是內(nèi)部的,所以這段代碼應該可以工作......我得到......“不一致的可訪問性。字段類型隊列比 Form1.Queue 更難訪問”請參閱下面的代碼。namespace WindowsFormsApplication3{    public partial class Form1 : Form    {        public Queue Queue;          // <-- PROBLEM LINE        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {        }    }}這是隊列的定義;我不認為它真的很重要,但它是由評論者要求的;當我公開課程時,所有問題都解決了。但是,如果默認范圍應該是內(nèi)部的,那就沒有意義了,它不應該強迫我公開: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;        }    }}
查看完整描述

2 回答

?
ITMISS

TA貢獻1871條經(jīng)驗 獲得超8個贊

因此,通過在您的問題中添加一些猜測,如果有問題的類型是

internal class Queue

那么,很明顯,

public Queue queue;

是一個錯誤 - 你有一個類型的public字段internal。你希望它如何工作?問題不在于您Form無法訪問Queue. 這是您項目外部的某些東西可以訪問Form,可以訪問該public字段,但它無權(quán)訪問該字段的類型。這沒有任何意義,您如何期望外部類能夠理解它無法訪問其類型的字段?

如果您聲明Queuepublic- 問題就消失了,該類型現(xiàn)在在外部可見。如果您將該字段聲明為internal(或什至private) - 錯誤也會消失,因為訪問該字段的任何內(nèi)容也可以訪問該類型。

我希望這能解釋這個問題。附帶說明:聲明public字段通常是一個錯誤,如果您希望它可以從外部訪問,請使用屬性:

public Queue Queue {get; set;}


查看完整回答
反對 回復 2022-01-09
?
紅顏莎娜

TA貢獻1842條經(jīng)驗 獲得超13個贊

您的 Form 已聲明public并包含 Queue 類的公共字段。由于Queue不公開,編譯器拒絕編譯您的代碼。如果您想Queue成為內(nèi)部的,請將該字段聲明為internalprivate


查看完整回答
反對 回復 2022-01-09
  • 2 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號