2015-11-05 42 views
0

我得到這個錯誤,並不完全確定爲什麼。在一類我創建具有以下行的代碼的對象:最好的重載方法匹配有一些類的構造函數無效參數(C#)

StoreSale sale = new StoreSale(1, 13.99); 

的StoreSale類內部的構造是這樣的:

public StoreSale(int quantity, float value) 
{ 
    this.quantity = quantity; 
    this.value = value; 
} 

...和我得到的錯誤「的'applicationname'的最佳重載方法匹配.StoreSale.StoreSale(int,float)有一些無效參數。'

有人能告訴我我做錯了什麼嗎?

+0

既然你沒有int quantity = 1的問題,問題顯然是13.99的值。代碼的第一行看起來不像真實運行時的聲明,因爲這些值都是硬編碼的。因此,您可以輕鬆完成浮點值= 13.99;併爲自己看到了這個錯誤。 –

回答

11

13.99double字面值。附加一個f使其成爲浮點數:13.99f

無論如何,您可能不希望將二進制浮點數用於貨幣值。 decimal是一個更加明智的選擇。

+0

謝謝,這工作!沒有意識到十進制數據類型或附加f浮動的必要性。 – LewisDavie

+1

喬伊是正確的,你應該使用十進制貨幣值。在這種情況下,你還需要使用'13.99m'作爲十進制文字。 – Dusty

3

13.99double。要使其成爲float文字,請添加f13.99f

3

由於文字13.99double,因此會出現此錯誤,並且沒有從doublefloat的隱式轉換。改爲使用13.99F

StoreSale sale = new StoreSale(1, 13.99F); 
相關問題