我写了两行代码
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然后显示此错误。
答案 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
将初始化为其默认值值0
。 string
字段将获取引用类型的默认值,即null
引用。
如果您有本地变量,则必须在使用之前为其指定值。局部变量是在方法体(或构造函数,访问器等)中声明的变量。因此,你的问题很混乱,因为你不清楚是否有田地或当地人。