2014-05-08 105 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