2010-10-25 33 views
2

我得到錯誤。我看的方式是我想從dayrental()* 19.95返回的值存儲在租賃中。錯誤使用未分配的本地變量'rental'

使用未分配的局部變量「租賃」

private void button1_Click(object sender, EventArgs e) 
    { 

     double rental; 
     if (checkBox1.Checked == true) 
      rental = dayrental() * 19.95; 
     label4.Text = Convert.ToString(rental); 




    } 

    private void label4_Click(object sender, EventArgs e) 
    { 

    } 
    public double dayrental() 
    { 
     var timeSpan = dateTimePicker2.Value - dateTimePicker1.Value; 
     var rentalDays = timeSpan.Days; 
     return (double) rentalDays;   
     //label4.Text = Convert.ToString(rentalDays); 
    } 
+1

我必須爲那真正愚蠢的問題而道歉。 – user770022 2010-10-25 16:17:29

+0

不愚蠢..它發生了,直到你認識到錯誤,它需要時間來理解它(我敢打賭,你會從現在開始認識到它..( - :)。 – 2010-10-25 16:21:54

+0

沒有這樣的事情是一個愚蠢的問題,這是 – 2010-10-25 16:22:34

回答

2

此消息出現的原因是編譯器不允許您使用未分配的變量。

讓我們來看看你的CheckBox.Checked屬性是否爲假,會發生什麼?您正在嘗試轉換變量的值。最後,你正在使用它!但是編譯器應該如何知道它的價值呢?

以下是深入解釋此錯誤的鏈接:Compiler Error CS0165

你需要給編譯器打電話,你知道你在做什麼。怎麼樣?通過初始化一個默認值給你的變量。這可能是以下一些:

double rental = default(double); 

double rental = 0; 

否則,您可能希望你的形式顯示任何價值可言,當這CheckBox不是Checked。然後,你需要一個可爲空的雙精度型。

double? rental = null; 

double? rental = default(double?); 

雖然使用這種雙可爲空值類型,這將讓你當CheckBox.Checked = false什麼都不顯示。現在,您應該問自己,當CheckBox不是Checked時是否要顯示零(0)。

順便說一句,if條件只需要一個布爾表達式在其括號中,這正是CheckBox.Checked屬性,因此不需要將其與true進行比較。

double? rental = null; 

if (CheckBox1.Checked) 
    rental = DayRental() * 19.95; 

label4.Text = Convert.ToString(rental); 

遵循這個簡單的規則,你應該永遠不會再次得到這個錯誤。

這有幫助嗎?

+1

我是新來C#(來自Java)並不知道有關default()。謝謝你。 – Tenner 2012-04-04 14:21:44

2

如果未選中checkBox1的,rental不會得到一個值。這不是好( - :

慣用的解決方案是指定一個默認值,
但在你的情況,我覺得這是更好的:

if (checkBox1.Checked) //same as "==true" only prettier 
{ 
rental = dayrental() * 19.95; 
label4.Text = Convert.ToString(rental); 
} 

但我真的不知道的情況下,使我不能告訴
總之你明白了吧 - rental必須絕對得到的值。在你的代碼可能無法得到的值..

0

0.0初始化它,然後它會被assinged值。 ..

double rental = 0.0; 
0
double rental = 0.0; 
if (checkBox1.Checked == true) 
     rental = dayrental() * 19.95; 
label4.Text = Convert.ToString(rental); 

如果該複選框未選中,然後租賃將有一個價值的方式。

+0

爲什麼你會認爲他在零號checkbox1沒有被選中的時候會在零號被刪除呢? – 2010-10-25 16:13:59

+1

我假設他足夠聰明,可以用他想要的值替換零號 – Dismissile 2010-10-25 16:26:53

相關問題