C# 使用未赋值局部变量(字符串)错误

C# 使用未赋值局部变量(字符串)错误,c#,string,winforms,undefined,C#,String,Winforms,Undefined,因此,我在文本框分配中出现了这个错误,但我不明白为什么,有人能给我一个建议吗 private void button2_Click(object sender, EventArgs e) { int n = Convert.ToInt32(textBox16.Text); int t = Convert.ToInt32(textBox17.Text); matrix.CalculeazaQR(n, t); stri

因此,我在文本框分配中出现了这个错误,但我不明白为什么,有人能给我一个建议吗

    private void button2_Click(object sender, EventArgs e)
    {
        int n = Convert.ToInt32(textBox16.Text);
        int t = Convert.ToInt32(textBox17.Text);
        matrix.CalculeazaQR(n, t);

        string temp;

        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                temp = matrix.q[i, j].ToString("0.00");

                if (j % (n - 1) == 0)
                    temp += "\n";

                temp += ",";

            }

        }
        textBox3.Text = temp;

    }
private void按钮2\u单击(对象发送者,事件参数e)
{
int n=Convert.ToInt32(textBox16.Text);
int t=转换为32(textBox17.Text);
矩阵计算法(n,t);
字符串温度;
对于(int i=0;i
您正在for循环内分配
temp
,编译器无法确定您是否将进入循环。您可以在顶部初始化
temp
,如下所示:

string temp = string.Empty;
循环内的语句只在条件为真时执行,编译器在编译时不能确定条件是否为真,它会考虑临时变量未分配,因此错误。p> “有人能给我一个建议吗?”
那么,初始化文本:

string temp = string.Empty;
编译器无法知道temp(用于
textBox3.Text=temp;
)是否在循环后有值(例如,当n<1时)。

如下所示:

string temp="";

在实际使用之前,您必须将字符串(或任何变量)分配给empty或其他对象。

一方面,您的循环从一开始就中断了-只有最后一次迭代才有意义(即当
i
j
都是
n-1
)因为您要完全替换
temp
的值

但是编译器不知道
n
是正的-它不知道您将进入循环。通常,编译器不会假设您输入
if
语句、
for
语句、
while
语句或
foreach
循环的主体-因此,在这些主体内进行的任何赋值都不会影响在语句末尾是否明确指定局部变量。。。在读取局部变量之前,必须对其进行明确赋值(就像在方法末尾所做的那样)

我怀疑您实际上想要一个
StringBuilder
,并将其附加到循环中:

StringBuilder builder = new StringBuilder();
for (...)
{
    for (...)
    {
        builder.AppendFormat("{0:0.00},", matrix.q[i, j]);            
    }
    builder.Append("\n");
}
textBox3.Test = builder.ToString();
“当您声明字符串时,您必须将其赋值为空”实际上,您没有。只有在以后使用变量时,才需要在使用变量之前为其赋值<代码>字符串温度;temp=“foo”;控制台写入线(临时)。没有关于申报的作业,仍然有效。这是因为编译器可以100%确定,在使用temp之前,它将被赋值。同样有效:
字符串温度;如果(a==b)temp=“foo”else temp=“bar”;控制台写入线(foo)if
-语句foo的任何一种情况下都会被赋值。@guNNer2bad,欢迎您