2016-10-08 96 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