[英]I declare a variable in C# and cannot use it inside of the switch statement
考慮一下這個C#代碼:
string gr = comboBox1.ValueMember;
decimal sum;
try
{
decimal rite = Convert.ToDecimal(textBox1.Text);
decimal left = Convert.ToDecimal(textBox2.Text);
}
catch (Exception)
{
string swr = "Please enter REAL a number, can be with decimals";
label2.Text = swr;
}
switch (gr)
{
case "X":
sum = 12M;
break;
case "/":
break;
case "*":
break;
case "-":
break;
default:
break;
}
answerText.Text = Convert.ToString(sum);
如果我在switch語句中給小數sum
一個值,它會彈出一個錯誤語句說:
使用未分配的局部變量'sum'
我是C#的新手,所以這可能聽起來很愚蠢。 看起來我ALREADY在switch
語句中設置了sum的值。 我試過把相同的sum = 12M;
在所有其他案例陳述中,但似乎沒有幫助。
順便說一下,我也在修改switch語句之外的其他變量時遇到問題 - EX。 儀式,左;
如果gr
不等於“X”,則sum
沒有值。 編譯器會警告你。
只有instance variables
才能獲得默認值,因此必須initialized
像sum
這樣的局部變量,以便在其他地方使用它。 由於可能無法分配任何內容,編譯器會引發錯誤。
您只是為一個條件設置sum的值,因此當您嘗試將其轉換為字符串時,它不會始終分配。 嘗試將其聲明為decimal sum = 0.0;
。
編譯器檢測到存在不會分配變量的執行路徑。 如果gr
不是X
那么在switch語句之后將使用未賦值的值。
您只需將初始值添加到聲明中即可:
decimal sum = 0m;
這是因為僅當switch語句遇到“X”情況時才會分配變量sum。 要解決此問題,請通過在頂部執行以下操作來設置默認值:
decimal sum = 0m;
只需在聲明時為其指定默認值,您就不會收到錯誤:
decimal sum = 0;
在聲明時你應該使用這個:
decimal sum=0m;
編譯器不能確保第一種情況會保持,因此仍然可以在不分配的情況下使用sum
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.