-1

我写了两行代码

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

我无法理解 string 是 int 的值类型,然后显示此错误。

4

2 回答 2

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);
于 2013-08-24T09:12:43.033 回答
0

int是值类型,又string是引用类型,所以它们是不同的。

如果您有一个字段(类级变量),并且您没有在声明该字段的位置初始化字段值,那么int将使用其默认值初始化an 0。而一个string字段会得到一个引用类型的默认,也就是null引用。

当你有一个局部变量时,你必须在使用它之前给它赋值。局部变量是在方法体(或构造函数、访问器等)中声明的变量。因此,您的问题令人困惑,因为不清楚您是否有字段或本地人。

于 2013-08-24T09:30:15.487 回答