2011-10-26 345 views
2

是否有分配一個默認的方法像這樣一類的方式:C#類的默認方法

public class EscMenu 
{ 
    public static void EscMenu() 
    { 
     //do something 
    } 

    public static void SomeOtherMethod() 
    { 
     //do something else 
    } 
} 

所以,當我在同一個解決方案調用EscMenu.SomeOtherMethod();另一個類,它確實「做其他事」,但我不能撥打EscMenu();

我該怎麼做?

謝謝!

編輯:

好吧,我也會嘗試以更好的方式來解釋這一點:

我只想類EscMenu當我把它從另一個這樣的(外部)類做一些事情:EscMenu(); 。當然,我可以在EscMenu中輕鬆創建一個方法default(),並在外部調用EscMenu.default();。但我真的想只是調用EscMenu();

如果,僅僅是不可能或我繼續解釋自己失敗了,那麼就不要再介意;-)

謝謝!

+1

很難理解什麼是你想達到什麼 – sll

+0

您的意思是「**我不能叫‘EscMenu();’**」? –

+0

編輯我的問題。希望我這次更好地解釋自己^^ – janw

回答

6

不,你不能給一個方法與它的包含類型相同的名稱 - 你真的不想混淆類型的名稱和方法的名稱。爲什麼引入歧義?

如果您可以舉一些例子,您想以某種方式編寫除了已有的代碼以外的代碼,我們可能會幫助您更多。 (例如,它可能是擴展方法可能會有所幫助。)

+0

看我的編輯:D 感謝您的幫助。 – janw

+0

@janw:好的,基本上不會,你不能這樣做。坦率地說,我很高興 - 因爲它會*看起來像你的代碼做了一件事情(試圖在當前範圍內找到一種名爲'EscMenu'的方法),當它真的試圖做另一件事情時。 –

0

「默認」法的概念是一種在C#荒謬的,但是從我可以從你的需求蒐集,你不希望能夠調用EscMenu外部(即外部類的),所以使用該private訪問修飾符:

private static void EscMenu(){ 
    //do something 
} 

但你需要一個不同的名稱爲成員。

0

我不知道你用默認的方法是什麼意思。但是,爲了防止其他類中調用類ExcMenu方法,可以讓你的私有方法:

public class EscMenu 
{ 
    private static void EscMenu() 
    { 
     //do something 
    } 

    public static void SomeOtherMethod() 
    { 
     //do something else 
    } 
} 
0

你有沒有(如果你清理語法)什麼是static constructor

  • 靜態構造函數不接受訪問修飾符或具有參數。
  • 自動調用靜態構造函數以在創建第一個實例或引用任何靜態成員之前初始化該類。
  • 無法直接調用靜態構造函數。
  • 用戶無法控制何時在程序中執行靜態構造函數。
+2

它不是一個靜態構造函數,因爲返回類型,甚至是'void'在這種情況下都是非法的 - 更合適的說他們擁有的是一種方法,但是使用非法名稱。 –

+0

是的。他們在那裏可能會被解釋爲不當企圖成爲一個靜態構造函數,或者是一個不正當的嘗試成爲成員函數。我在最初的答案中已澄清。 –