Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象引用未设置为值类型为c的对象实例#_C#_String_Int - Fatal编程技术网

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

C# 对象引用未设置为值类型为c的对象实例#,c#,string,int,C#,String,Int,我写了两行代码 (一) (二) 因为我没有初始化任何变量,(1)返回0,但(2)抛出异常,表示对象引用未设置为对象的实例 我无法理解字符串的值类型为int,然后显示此错误。…我无法理解字符串的值类型为int,然后发生此错误。 谁说字符串是值类型的?它的引用类型,您必须在使用它之前给出它的值,否则您将得到您得到的错误 而int是值类型。即使未对其进行初始化,也会将其初始化为0 你可以这样做 string str = String.Empty; str = SomeFunctionReturni

我写了两行代码

(一)

(二)

因为我没有初始化任何变量,(1)返回
0
,但(2)抛出异常,表示
对象引用未设置为对象的实例


我无法理解字符串的值类型为int,然后显示此错误。

…我无法理解字符串的值类型为int,然后发生此错误。

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

而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
将使用其默认值
0
初始化。而
字符串
字段将获得引用类型的默认值,即
null
引用


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

与字符串类似,是否有任何数据类型作为引用类型?如果我声明字符串并为不同的五次赋值。因此将有五个对象,或者只覆盖一个对象。后者。最后一个将被保留。“最后一个将被保留”是什么意思。将有五个对象或一个对象将被覆盖?如果您在变量中输入“I”,然后输入“We”,那么“a”so“a”。“We”将覆盖“I”,而“A”将覆盖“We”。我认为第二个片段应该是
MessageBox.Show(str)?是的,它是MessageBox.Show(str);在snippet中,str本身就是一个字符串,因此无需执行
str.ToString()<代码>MessageBox.Show(str)就足够了吗?
string str;
MessageBox.Show(str.ToString());
string str = String.Empty; 

str = SomeFunctionReturningString();

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