2016-10-08 62 views
-1

此代码:使用未分配的局部变量的 'X'

int a; 
if(a==1){ do something} 

Image img; 
    if(img!=null){do something} 

这些代码生成错误:

Use of unassigned local variable 'variable-name'

我确切地知道这个错误说什么,如何解决它。但我想知道的是,

  1. 不应声明和未赋值的变量,有一个值?像nullImage

2.为什么不能甚至比较变量?它可以简单地说它不匹配。

+0

使用未初始化的变量通常是一个错误。它可能源于C/C++,当一个未初始化的变量可能包含随机数据时。 –

回答

2
  1. Shouldn't a variable that is declared and not assigned a value, have a value? like null for the `Image'

不,这不是语言定义的方式。局部变量在C#中没有默认值(或者大多数其他语言,但绝不是全部)。

2.Why wouldn't it allow to even compare the variable? it can simply say that it doesn't match.

因为您试图从定义中读取您从未分配过值的变量的值(在C#中)。因此,它会唤起你对这个错误的关注。

+0

“或大多数其他语言”---大多数或最少? – zerkms

+1

@zerkms:我熟悉的大多数高级语言都不会将缺省值赋给本地变量 - C,Java,C#,...我日常经验中的例外情况是JavaScript,它默认它们是'undefined' 。 –

+1

http://ideone.com/buBn58? – zerkms