日期:2014-05-17  浏览次数:20746 次

C# var 赋值false 居然if执行,请教为什么?

var exist = false;
if (exist)
{
   //...ifblock
}


上面这段代码,为什么代码会进入if块? 如果改为bool 怎不会进入if块。

bool exist = false;
if (exist)
{
   //...ifblock
}


请高手明示!谢谢!
C#?var?bug?if

------解决方案--------------------
var exist = false;
if (exist)
{
   //...ifblock
}
这样可以进入if语句里面?那三观尽毁了
是不是前面加了个!?
------解决方案--------------------
这是不可能的,var exist = false;等同于bool exist = false;,根据MSDN的定义:
从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型 var。 隐式类型的本地变量是强类型变量(就好像您已经声明该类型一样),但由编译器确定类型。 下面的两个 i 声明在功能上是等效的:
var i = 10; // implicitly typed
int i = 10; //explicitly typed

因此var exist = false肯定等同于bool exist = false,应该是你看错了吧。
------解决方案--------------------
直接上图证明楼主说的事情不可能发生

------解决方案--------------------
LZ你重新生成一下项目!
------解决方案--------------------
估计是中间var的值被修改过