我發(fā)現(xiàn)有一些我認(rèn)為無(wú)法訪問(wèn)且未被檢測(cè)到的代碼。編譯器和Visual Studio均不發(fā)出警告??紤]以下代碼:enum Foo { A, B, C }class Bar { public Foo type; }static class Program{ private static void Main() { var bar = new Bar { type = Foo.A }; if (bar.type == Foo.B) { Console.WriteLine("lol"); } }}顯然,該程序不會(huì)打印出“大聲笑”,因?yàn)閕f語(yǔ)句中的條件為false。我不明白為什么為什么不為無(wú)法訪問(wèn)的代碼發(fā)出警告。我唯一的假設(shè)是,如果您在多線程程序中存在競(jìng)爭(zhēng)條件,則有可能實(shí)現(xiàn)此目標(biāo)。這樣對(duì)嗎?
3 回答

萬(wàn)千封印
TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
因?yàn)樵诰幾g時(shí)無(wú)法做出這樣的保證。考慮這個(gè)替代的Bar類
class Bar
{
Random random = new Random();
Array Foos = Enum.GetValues(typeof(Foo));
private Foo _type;
public Foo type
{
get { return _type; }
set
{
_type = (Foo)Foos.GetValue(random.Next(3));
}
}
}
請(qǐng)注意,“可達(dá)”是在功能級(jí)別定義的。即使在安全的情況下,也不允許接觸到正在測(cè)試的功能之外。
- 3 回答
- 0 關(guān)注
- 196 瀏覽
添加回答
舉報(bào)
0/150
提交
取消