2013-02-03 28 views
-2

我該如何解決?我如何指出我想要使用的確切超載?模糊遞歸(?)過載調用

int A() 
    { 
     if (Environment.TickCount == 666) 
      return 0; 
     else 
      return 1; 
    } 

    bool A() 
    { 
     if (A() == 0) //here's an error! 
      return false; 
     else 
      return true; 
    } 
+1

僅在結果類型不同時發生重載(如果C#中不可用)。 –

+0

你到底在做什麼? –

+0

錯誤是**以下方法或屬性**之間的調用不明確。我得到的唯一錯誤!用不同的返回值聲明重複函數不會導致錯誤!所以這就是爲什麼我感到困惑,並認爲有一種方法可以指向確切的功能。 – user2037342

回答

2

當您提供多個同名的方法,該方法被認爲是超載。您不能在C#中的返回類型中重載方法:您需要爲它們提供不同的名稱或不同的參數類型。在你的情況,改變bool A的名稱bool B將解決這個問題:

int A() 
{ 
    if (Environment.TickCount == 666) 
     return 0; 
    else 
     return 1; 
} 

bool B() 
{ 
    if (A() == 0) //No error here 
     return false; 
    else 
     return true; 
} 
0

@dasblinkenlight是正確的。命名您的功能描述性名稱也是一種好的做法。

示例:bool IsEnvironmentTickCount666()。函數名中的Is使得讀取代碼的人很容易看到你正在返回一個bool