2014-05-08 141 views
-3

嗨我在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

什么是地点类标记为? – BradleyDotNET

+0

对于迟到的回复,我很抱歉,自从我参加该计划以来,我一直没有上网。我将位置类标记为“抽象类位置”。在所有的课程中,我公开发布了自己的代码,当我将它们设为私有时,我创建了一个'get'访问器,以便能够访问另一个类中的私有代码。非常感谢回复 – Hannah

回答

0

让地理位置类公共我f,将它不是已经公开

+1

这应该是一个评论,我们甚至不能看到课程代码。这就是说,这样做会解决他的问题(尽管这不会增加他对访问修饰符的理解)。 – BradleyDotNET

+0

你想让我编辑我的文章并添加更多的代码吗?我不想通过添加大块代码来使问题变得很长。如果它能帮助其他人更好地回答问题,我可以添加更多的代码 – Hannah

+0

@ user3617388我们感谢没有大量的代码。但是,由于可访问性修饰符导致错误,因此我们需要至少看到一段“位置”类代码。感谢您发布它! – BradleyDotNET

0

您需要声明类是这样的:

public abstract class location 
{ 
    ... 
} 

作为开头大写字母(即顺便说一句,一般的代码风格有类。 Location)。

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

有关访问修饰符的更多信息,请参见MSDN

+0

谢谢,我添加了公共和其他一些更改,现在我的程序正在运行。我会公布答案,但因为我是一个新用户,所以在发布答案前让我等了8个小时。再次感谢您的帮助 – Hannah

+0

@ user3617388如果此更改解决了您的问题,您实际上不需要发布任何内容。 StackOverflow的概念是它的一个问题/答案模型。你的问题是“为什么我得到不一致的可访问性错误”。任何其他与该问题无关的变化都不需要成为答案的一部分(尽管它们在技术上可能是这样)。随意接受最能帮助你的答案/是最正确的答案,它让社区知道什么解决了你的问题,并给答案者和你一些声望。 – BradleyDotNET

+0

@ user3617388,这就是说,如果你仍然觉得你有一个重要的答案来增加这个问题,那就马上行动吧!鼓励自我回答的问题在这里,但要确保答案是一个SO质量的职位,而且你不只是重复已经说过的话。 – BradleyDotNET