2012-06-18 38 views
-1

無重載方法「WeightOut」需要兩個參數無重載方法「WeightOut」需要兩個參數

我的代碼是工作之前,我調整了它,使之更有效率。

這是工作代碼:

在基類中我有:

public virtual double WeightOut(double weightOut, double wightIn) 
     { 
      return Math.Round((weightOut = (weightIn + 0.12)), 2); 
     } 

然後在繼承類我都:

public override double WeightOut(double weightOut, double weightIn) 
     { 
      return Math.Round((this.WeightIn() + 0.12), 2); 
     } 

然後,我改變它,這樣我我不使用相同的代碼在這兩個類和而只有在繼承的類像這樣:

我n中的基類:

public abstract double WeightOut(); 

在繼承的類:

public override double WeightOut() 
     { 
      return Math.Round((this.WeightIn() + 0.12), 2); 
     } 

我然後與這行代碼從WeightOut()方法導致在相同INHERTIED類編譯時得到了語法錯誤:

public override double HowMuchTheFishWeighOutKG() 
     { 
      return this.FishPerTank() * this.WeightOut(0, 0) * this.Tanks(); 
     } 

所以我然後把它改爲:

public override double HowMuchTheFishWeighOutKG() 
     { 
      return this.FishPerTank() * this.WeightOut() * this.Tanks(); 
     } 

語法錯誤仍然存​​在:

方法'WeightOut'沒有重載需要2個參數。

(另一個較小的問題) 它告訴我哪裏出錯:37,59 但Visual Studio不告訴我這裏說的,我將不得不指望自己找到它在哪裏。

+0

目前還不清楚你所得到的錯誤** **最後。它是什麼錯誤? – Tigran

+0

你的代碼中的某個地方用2個參數調用了WeightOut。 –

+0

你會失望地發現'返回Math.Round((weightOut =(weightIn + 0.12)),2)'不會返回一個值給你的調用方法。查看「out」關鍵字。 – roken

回答

0

我會檢查幾件事: 在基類中,你確定WeightOut的抽象方法沒有參數。發佈的投訴可能與繼承的函數定義中的錯誤匹配有關。

第二件事來檢查,右擊繼承的類「WeightOut」功能(該功能的名稱明確),然後選擇選項Find All References。這應該給你一個代碼中的每一個地方的清單,通過類名/文件名和行號來調用這個函數。這可能有幫助。

注意:如果你沒有這種選擇,請詳細說明您所使用的Visual Studio的版本?

還要注意:這可以用一個「查找文件」的搜索以及函數名來完成。此搜索將返回更多的誤報,但仍會找到對該函數的所有引用。

此外,即使在vs 2005中,如果雙擊錯誤框中的錯誤,它應該將光標放在引起問題的行上,或者更確切地說,是引發錯誤的行,如果它不是代碼行,而是像關閉},然後告訴我們一些不同的東西。

相關問題