簡體   English   中英

如何避免使用永遠不會發生的未分配變量?

[英]How to get around use of unassigned variable that can never happen?

在下面的代碼中,編譯器在返回行的“intValue”上給出了“使用未分配的局部變量”。 但是,不會在未分配的情況下達到“intValue > 500”(因為如果未分配intValue ,則valueIsInt為 false,並且該語句在達到intValue之前返回 false)

有沒有辦法在不修改代碼邏輯業務邏輯的情況下解決這個問題? 這是一個非常簡化的例子; intValue是另一種類型並且條件intValue > 500更復雜的情況下,我們不能簡單地在else塊中給 intValue 一個值,例如intValue = 0

bool valueIsInt;

if (value is int intValue)
{
    valueIsInt = true;
}
else
{
    valueIsInt = false;
}

return valueIsInt && intValue > 500;

我想避免這種情況,以防 else 語句中的代碼更復雜:

else
{
    return false;
}

比如這樣:

bool valueIsInt;

if (value is int intValue)
{
    valueIsInt = true;
}
else
{
    if (value is string stringValue)
        valueIsInt = int.TryParse(stringValue, out intValue);
    else
        return false;
}

return valueIsInt && intValue > 500;

更新

static bool IsValueGreaterThan500(object value)
{
    try
    {
        // Converts the value to int if it is not already an int
        // from bool, short, float, double, string, etc.
        return Convert.ToInt32(value) > 500;
    }
    catch
    {
        return false;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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