我有多個個案switch語句:的Visual Studio剛過標誌着碼「情況變量:」無法訪問
ConversionState state = ConversionState.Start; // enum
for(int i = 0; i < source.Length; i ++)
{
switch(state)
{
case ConversionState.Start:
state = ConversionState.Name; // <-- warning here
name += source[i]; // source is a string
break;
case ConversionState.Name:
if(source[i] == ' ') // <-- warning here
{
name = name.ToLower();
if(name[0] == '/')
name = name.SubString(1);
state = ConversionState.Between;
}
else
name += source[i];
break;
case ConversionState.Between: // no code in this case statement, yet to be implemented
break; // <-- warning here
}
}
我得到三個標線的警告:「檢測不到的代碼」。案件之後的第一個陳述不可能無法達到,可以嗎?我的問題是:
是我的代碼有問題,或者是警告錯誤?
如果VS2015認爲代碼片段不可訪問,當我編譯優化時會被刪除嗎?如果不是,我應該忽略這個警告嗎?
此警告是否意味着標記的行不可訪問,或者整個案例無法訪問?
PS:我知道,當前的代碼可以不帶開關被改寫,這將解決這個問題,但是這將增加未來代碼將使 - 了 - 更容易使用開關來維持。
編輯(由阿米特dayama要求):
private enum ConversionState
{
Start, Between, Name, Argument, Switch
}
枚舉是具有包含最初發布代碼的方法的類中。
編輯2: 此代碼的方法的第一行是throw new NotImplementedException();
。顯然,這使得Visual Studio在方法不可達的每個開關中標記每個事件的第一行,但沒有其他事件,並且有趣的是,不是異常之後的整個代碼。
,請複製粘貼更多的代碼。沒有在我的機器再現(VS 2015)。 – qxg
什麼是給這個警告?我沒有從VS也沒有從resharper得到任何東西。還我沒有看到在給定的代碼任何理由,實際上導致無法訪問的代碼問題 –
你能證明你的枚舉? –