为什么intellisense显示这个变量从未使用过,而不是另一个?

时间:2017-09-07 13:58:28

标签: c#

这是一个简单的代码段

public static void Foo(string s)
{
    int a = 0;
    int b = s.Length - 1;          
}

Visual Studio的intellisense在a下绘制绿色波浪线,显示它已分配但从未使用过。但它并没有对b这样做。 为什么?到目前为止,我还没有使用过b,对吗?

1 个答案:

答案 0 :(得分:1)

未使用a是警告CS0219的实例。

a被赋予一个常量值是完全没有意义的,所以最多你应该删除它但也更糟(因此警告有用的原因)你确实有一个很好的理由来分配一个值a但是犯了一些错误,所以有一个警告和一条绿线(如果你有警告 - 如错误,则为红线)。

b也未被使用,但更有可能达到目的。请考虑以下内容不是有效的C#语句:

s.Length - 1;

甚至:

s.Length;

大多数情况下,将属性的值赋给变量并且不使用它仍然不是很有用,但我们偶尔需要调用属性来产生副作用(很多不好的标志)时间,所有相同,由于其他原因,但仍然)左右我们可以在调试时检查结果。

因此,这不是一个警告案例,因为它更有可能出于某种充分的理由。 (如果你有Visual Studio的版本将未使用的变量变为灰色,那么它仍然是灰色的,我不记得他们是否都这样做了。)