对象引用未设置为值类型c#上的对象实例

时间:2013-08-24 09:11:32

标签: c# string int

我写了两行代码

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然后显示此错误。

2 个答案:

答案 0 :(得分:3)

....I can't understand that string is value type as int then this error is being occurred.

谁说字符串是值类型?它的引用类型,你必须在使用它之前给出它的值,否则你将得到你得到的错误。

而int是值类型。即使你没有初始化它,也会被0初始化。

你可以这样做

string str = String.Empty; 

str = SomeFunctionReturningString();

if (!String.IsNullOrEmpty(str)) //cause that function can also return null.
    MessageBox.Show(str);

答案 1 :(得分:0)

int是值类型,string是引用类型,因此它们是不同的。

如果您有字段(类级变量),并且未初始化声明字段的字段值,那么int将初始化为其默认值值0string字段将获取引用类型的默认,即null引用。

如果您有本地变量,则必须在使用之前为其指定值。局部变量是在方法体(或构造函数,访问器等)中声明的变量。因此,你的问题很混乱,因为你不清楚是否有田地或当地人。