我寫的兩行代碼對象引用不設置對值類型C#的對象的實例
1)
int i ;
MessageBox.Show(i.ToString());
2)
string str;
MessageBox.Show(str.ToString());
正如我沒有初始化任何變量和(1)返回0
但(2)拋出異常說Object reference not set to an instance of an object
我不明白,字符串是值類型爲int,然後顯示此錯誤。
我寫的兩行代碼對象引用不設置對值類型C#的對象的實例
1)
int i ;
MessageBox.Show(i.ToString());
2)
string str;
MessageBox.Show(str.ToString());
正如我沒有初始化任何變量和(1)返回0
但(2)拋出異常說Object reference not set to an instance of an object
我不明白,字符串是值類型爲int,然後顯示此錯誤。
....I can't understand that string is value type as int then this error is being occurred.
誰說字符串值類型?它的參考類型,你必須在使用它之前給它的價值,其他明智的你會得到你得到的錯誤。
int是值類型。即使你不初始化,則是由0.1
初始化,您可以做到這一點
string str = String.Empty;
str = SomeFunctionReturningString();
if (!String.IsNullOrEmpty(str)) //cause that function can also return null.
MessageBox.Show(str);
like string是否有任何數據類型作爲引用類型? –
yes'object'是除了class之外的一種數據類型。 –
如果我聲明字符串併爲不同的五次賦值。 所以會有五個對象或只有一個對象被覆蓋。後者是 –
int
是值類型,並且string
是引用類型,所以它們是不同的。
當你有一個場(類級變量),你不初始化,您聲明域的域值,那麼int
將與作爲0
它的默認值初始化。並且string
字段將獲得參考類型的默認值,該參考類型是null
參考。
當你有一個局部變量,你必須一個值,你使用它之前分配給它。局部變量是在方法體(或構造函數,訪問器等)中聲明的變量。因此你的問題很混亂,因爲不清楚你是否有田地或當地人。
我覺得第二個片段應該是'MessageBox.Show(str);'? –
是的,它的MessageBox.Show(str);在snippet str中的 –
本身就是一個字符串,所以不需要執行'str.ToString();'。 'MessageBox.Show(str);'就夠了? –