可访问性不一致

时间:2014-05-08 18:05:44

标签: c#

嗨,我在C#编程方面有点新,我有点卡住了。我试过搜索这个网站,但我没有成功找到我的问题的答案。我也试过将我的私人改为公众,但这不起作用。

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

  

错误2可访问性不一致:参数类型“exam2.location”是   比方法更难接近   'exam2.Form1.MoveToANewLocation(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; 
                     }

               }

       }   

2 个答案:

答案 0 :(得分:0)

如果位置类已公开,则将其设为公开

答案 1 :(得分:0)

您需要以这种方式声明您的课程:

public abstract class location
{
   ...
}

顺便说一句,通用代码样式的类以大写字母开头(即Location)。

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

有关访问修饰符的详细信息,请参阅MSDN