C# 不一致的可访问性

C# 不一致的可访问性,c#,C#,嗨,我对C#编程有点陌生,有点卡住了。我尝试过搜索这个网站,但我没有成功地找到我的问题的答案。我也尝试过将我的私人电脑改成公共电脑,但没有成功 以下是我收到的错误消息: 错误2可访问性不一致:参数类型“exam2.location”为 比方法更难接近 'exam2.Form1.移动到新位置(exam2.location)' 以下是我的部分代码: public Form1() { IntializeComponent(); CreateObject(); MoveToANe

嗨,我对C#编程有点陌生,有点卡住了。我尝试过搜索这个网站,但我没有成功地找到我的问题的答案。我也尝试过将我的私人电脑改成公共电脑,但没有成功

以下是我收到的错误消息:

错误2可访问性不一致:参数类型“exam2.location”为 比方法更难接近 'exam2.Form1.移动到新位置(exam2.location)'

以下是我的部分代码:

public Form1() 
{
   IntializeComponent(); 
   CreateObject(); 
   MoveToANewLocation(livingRoom); 
}

private void MoveToANewLocation(location newLocation) 
{ 
   currentLocation = newLocation;
   comboBox1.Items.Clear(); 

      for (int i = 0; i < currentLocation.Exits.Length; i++)  
         {
           comboBox1.Items.Add(currentLocation.Exits[i].Name);
           comboBox1.SelectedIndex = 0;
         }
    textBox1.Text = currentLocation.Description;

       if (currentLocation is IHasExteriorDoor)
         {
           GoThroughTheDoor.Visible = true; 
         } 

       else 
         {
          GoThroughTheDoor.Visible = false; 
         } 
  } 


abstract class location
  {
      public location(string name)
        {
         this.name = name; 
         }

       public location[] Exits;
       private string name;
       public string Name
         {
           get { return name; }

          }

        public virtual string Description
           {
              get {
                     string description = "You're standing in the" + name + 
                     ". You see exits to the following places: ";  

                   for (int i = 0; i < Exits.Length; i++)
                       {
                         description += " " + Exits[i].Name;
                         if (i != Exits.Length - 1)
                         description += ","; 
                        }

                     description += ",";
                     return description; 
                     }

               }

       }   
public Form1()
{
初始化组件();
CreateObject();
搬到新地点(起居室);
}
私有void移动到新位置(位置新位置)
{ 
当前位置=新位置;
comboBox1.Items.Clear();
对于(int i=0;i
如果location类尚未公开,则将其公开

您需要以以下方式声明您的类:

public abstract class location
{
   ...
}
另一方面,通用代码样式的类以大写字母开头(即
Location

C#默认可访问性为
internal
,因此在类中使用公共方法会导致此错误(如构造函数、属性和虚拟方法)。一个好的经验法则是总是将类声明为公共的,除非您确实知道您希望它们中的所有内容都是内部的或更低的


有关访问修饰符的更多信息,请参阅。

location类标记为什么?很抱歉,回复太晚,因为我一直在查看该程序,所以没有联机。我将location类标记为“抽象类location”。在所有的类中,我将代码公开,当我将它们私有时,我会创建一个“get”访问器,以便能够访问另一个类中的私有代码。非常感谢您的回复这应该是一个评论,我们甚至还看不到类代码。也就是说,这样做可以解决他的问题(尽管这并没有试图增加他对访问修饰符的理解)。你想让我编辑我的帖子并添加更多代码吗?我不想通过添加大块代码来让问题变得很长。如果这能帮助其他人更好地回答这个问题,我可以补充更多code@user3617388我们很感激没有大块的代码。然而,我们至少需要看到一段“location”类代码,因为它的可访问性修饰符导致了错误。谢谢你发帖!谢谢你的帮助。下次我提问时,我会尽量确保把所有需要的代码都放上去。:)我做了一些修改,我的程序现在正在运行。我会发布答案,但我不允许回答我自己的问题,直到8小时过去,因为我是新用户。再次感谢您的帮助谢谢,我添加了公共和一些其他更改,我的程序现在正在运行。我会发布答案,但因为我是一个新用户,这让我等了8个小时才发布答案。再次感谢您的支持help@user3617388如果这个改变解决了你的问题,你实际上不需要发布任何东西。StackOverflow的概念是它是一个问答模型。您的问题是“为什么我会遇到不一致的可访问性错误”。与该问题无关的任何其他更改都不需要成为答案的一部分(尽管从技术上讲可能是)。请随意接受对您帮助最大/最正确的答案,它让社区知道是什么解决了您的问题,并给了回答者和您一些声誉。@user3617388,也就是说,如果您仍然觉得有重要的答案要添加到问题中,请继续!这里鼓励自答问题,但请确保答案是一篇质量很高的帖子,并且你不只是重复已经说过的内容。谢谢你的提示,因为你知道我是这个网站的新手,所以我仍在学习如何运作。我想把答案贴出来,让人们知道问题已经解决了。然而,由于答案可能不会那么重要,因为每个人都看不到整个节目,我可能会放弃答案。