2011-04-23 125 views
3

我創建了一個單獨的.cs文件名稱aNameClass.cs,並在其中存儲了以下類。 我可以在我的Main()語句中聲明它,但是當我嘗試訪問GetChoice對象時,它告訴我由於prividlidges無效而無法訪問它。訪問類中的對象

這裏是我的代碼來引導它並訪問它。

namespace aNameCollector 
{ 
// ... 

csGetChoice gc = new csGetChoice(); 
choice = gc.GetChoice(); //invalid prividlidges??? 


    class csGetChoice 
    { 
     static string GetChoice() 
     { 
      string choice = " "; 
      Console.WriteLine("++++++++++++++++++=A Name Collector+++++++++++++++"); 
      Console.WriteLine(); 
      Console.WriteLine("What would you like to do?"); 
      Console.WriteLine("E = Enter a Name || D = Delete a Name || C = Clear Collector || V = View Collector || Q = Quit"); 
      choice = Console.ReadLine(); 
      return choice; 
     } 
    } 

回答

4

你需要使用一個靜態的參考和這樣的方法指定public

// static access: 
choice = csGetChoice.GetChoice(); 
... 
public static string GetChoice() { ... 

或使該方法的實例方法,而不是靜態的定義和訪問它像這樣:

// instance access: 
csGetChoice gc = new csGetChoice(); 
choice = gc.GetChoice(); 
... 
public string GetChoice() { ... // static keyword removed 

如果您沒有提供access modifier,則默認值爲private,因此僅對包含它的類可見並且不可見其他課程。

+0

現在它說它不能用一個實例引用訪問,而用一個類型名稱來代替它?那是什麼意思? – jpavlov 2011-04-23 15:35:22

+0

@jpalov:查看我的回答 – 2011-04-23 15:37:13

+0

其實我所要做的就是調用完整的類名,然後我的對象變得可見。謝謝。 – jpavlov 2011-04-23 15:37:56

1

使該方法公共並調用類型的靜態方法不是實例

csGetChoice.GetChoice(); 
+0

+1對靜態問題的好消息 – 2011-04-23 15:53:46

1

類型成員的static關鍵字狀態,你可以通過直接引用class訪問和不是它的對象。但是,您仍然需要正確的訪問修飾符才能訪問成員

private爲默認值時,你不明確申報C#訪問修飾符爲你的情況。這允許您僅在其class內訪問成員

爲了能夠從訪問它class你需要明確使用其他訪問修飾符public之外。

+0

+1對靜態問題的好評 – 2011-04-23 15:55:07