如何将多个变量的值添加到一个变量中?| C#

Ano*_*ous 1 c# variables decimal addition

如何在C#中将多个变量的值添加到一个变量中?

例如,我声明了三个变量

decimal number1 = 53m;

decimal number2 = 33m;

decimal total;    
Run Code Online (Sandbox Code Playgroud)

现在,当我这样做的时候

total = number1 + number2; 
Run Code Online (Sandbox Code Playgroud)

它给出一个错误“使用未分配的局部变量”

即使这样也行不通

total = number1;  
total = number2;    
Run Code Online (Sandbox Code Playgroud)

这也行不通

total += number1 
total += number2
Run Code Online (Sandbox Code Playgroud)

我知道在文本框中我们确实喜欢这样,所以,我认为它也可以用于变量,但事实并非如此。

totaltextbox.text += textbox.text1  
totaltextbox.text += textbox.text2  
Run Code Online (Sandbox Code Playgroud)

编辑:

现在,在我将声明中的每个值分配给每个变量之后,它就可以工作了。

之前我只在if语句中分配了它们,这导致了问题。看看我的方法,例如

private decimal OilLubeCharges()
        {
           decimal oilChange_var=0m;
           decimal lubeJob_var=0m;
           decimal oilLube_var=0m;
           decimal totalOiltLubeCharges_var=0m;


            if (oilChangeCheckBox.Checked)
            {
                oilChange_var = 26.00m;

            }

            else if (lubeJobCheckBox.Checked)
            {
                lubeJob_var = 18.00m;
            }

            else if (oilChangeCheckBox.Checked && lubeJobCheckBox.Checked)
            {
                oilLube_var = 26.00m + 18.00m;
            }

            totalOiltLubeCharges_var = oilChange_var + lubeJob_var + oilLube_var;  
Run Code Online (Sandbox Code Playgroud)

我不明白是否在if语句中给变量赋了一个值,那么它也应该起作用。为什么他们需要一开始就赋予价值?

感谢所有付出的努力。尊重!

Cal*_*ton 5

使用未分配的局部变量意味着:

decimal total;  
Run Code Online (Sandbox Code Playgroud)

已经声明了它,但是它没有值,您要在它具有值之前尝试使用它。这里没有作业。

因此,您将其初始化:

decimal total = 0;
Run Code Online (Sandbox Code Playgroud)

您的问题现在消失了。

但是,只有在尝试使用非初始化变量时,这才是错误

所以从技术上讲:

decimal val1 = 10;
decimal val2 = 10;

decimal total;

total = val1 + val2; // this works
Run Code Online (Sandbox Code Playgroud)

这也和

decimal total = val1 + val2; // an assignment.
Run Code Online (Sandbox Code Playgroud)

什么行不通

decimal total; // compiler knows you want a total variable

if (total > 10) // at this point, there is no value in total so how can we compare it
{
    Console.WriteLine("This won't compile");
}
Run Code Online (Sandbox Code Playgroud)

看着你的问题

private decimal OilLubeCharges()
{
   // this is what i **think** you might have started with
   decimal oilChange_var;
   decimal lubeJob_var;
   decimal oilLube_var;
   decimal totalOiltLubeCharges_var;


    if (oilChangeCheckBox.Checked)
    {
        oilChange_var = 26.00m;

    }

    else if (lubeJobCheckBox.Checked)
    {
        lubeJob_var = 18.00m;
    }

    else if (oilChangeCheckBox.Checked && lubeJobCheckBox.Checked)
    {
        oilLube_var = 26.00m + 18.00m;
    }

    totalOiltLubeCharges_var = oilChange_var + lubeJob_var + oilLube_var;
Run Code Online (Sandbox Code Playgroud)

这很简单,因为您已经在顶部定义了变量,然后使用if语句来定义是否设置这些变量。这意味着他们有可能没有价值。这是因为这条线

totalOiltLubeCharges_var = oilChange_var + lubeJob_var + oilLube_var;
Run Code Online (Sandbox Code Playgroud)

在这里,你是断然使用的所有变量。但是在那行之前,您有条件地给他们一个初始值。

因此,例如,如果lubeJobCheckBox.Checked为false,则lubeJob_var从未给您初始值。所以你不能使用它