簡體   English   中英

我在C#中聲明了一個變量,不能在switch語句中使用它

[英]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才能獲得默認值,因此必須initializedsum這樣的局部變量,以便在其他地方使用它。 由於可能無法分配任何內容,編譯器會引發錯誤。

您只是為一個條件設置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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM