好吧,考虑下面的代码:编译时错误和无法访问的代码
private const int THRESHHOLD = 2;
static void Main(string[] args)
{
string hello;
if (THRESHHOLD > 1) return;
Console.WriteLine(hello);
}
令人惊奇的是这个代码不抛出一个“使用未分配的局部变量的‘你好’”编译时错误。它只是给出了一个警告“无法到达的代码检测”。
即使代码无法访问,仍然是编译时错误,我认为正确的做法是抛出编译时错误。如果我要做到以下几点:
private const int THRESHHOLD = 2;
static void Main(string[] args)
{
string hello;
if (THRESHHOLD > 1) return;
hello.LMFAO();
}
果然,我得到一个“‘串’不包含‘LMFAO’,没有扩展方法‘LMFAO’接受一个类型的第一个参数的定义“字符串'可以找到(你是否缺少使用指令或程序集引用?)“编译时错误。
为什么与使用未分配的变量不一样?
编辑更改const
变量,因此它更少分散注意力。我认为很多人都忽略了这个问题的重点,这取决于哪种情况,编译时错误优先于不可访问的代码。
只是想知道:你曾经想TRUE;以评估什么,但'真'? – 2012-02-23 16:07:31
未使用的变量不会阻止您的代码工作或编译,这就是为什么它只是一条警告消息。试图使用未定义的方法会阻止你的代码运行,所以是一个错误。我不确定我是否理解这个问题。 – AaronS 2012-02-23 16:09:01
@BrianRasmussen也许他是来自'真'关键字全部大写的语言? – Servy 2012-02-23 16:10:59