我写了两行代码
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 的值类型,然后显示此错误。
....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);
int
是值类型,又string
是引用类型,所以它们是不同的。
如果您有一个字段(类级变量),并且您没有在声明该字段的位置初始化字段值,那么int
将使用其默认值初始化an 0
。而一个string
字段会得到一个引用类型的默认值,也就是null
引用。
当你有一个局部变量时,你必须在使用它之前给它赋值。局部变量是在方法体(或构造函数、访问器等)中声明的变量。因此,您的问题令人困惑,因为不清楚您是否有字段或本地人。