如何将多个变量的值添加到C#中的一个变量中?
例如,我声明了三个变量
decimal number1 = 53m;
decimal number2 = 33m;
decimal total;
现在,当我喜欢这个时
total = number1 + number2;
出现错误"使用未分配的本地变量"
即使这样也不行
total = number1;
total = number2;
它也不起作用
total += number1
total += number2
我知道在文本框中我们喜欢这样,所以,我认为它也适用于变量,但事实并非如此。
totaltextbox.text += textbox.text1
totaltextbox.text += textbox.text2
编辑:
现在,在我将声明中的每个值分配给每个变量之后它正在工作。
之前我只在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;
我不明白我是否在if语句中给变量赋值,然后它也应该有效。为什么他们需要在一开始就给出一个价值?
感谢所有付出努力的人。对于!
答案 0 :(得分:4)
使用未分配的局部变量意味着:
decimal total;
已声明此内容,但它没有值,您尝试在具有值之前使用它。这里没有任何作业。
所以你初始化它:
decimal total = 0;
你的问题现在消失了。
但是,如果您尝试使用未初始化的变量,则只会出现错误。
技术上如此:
decimal val1 = 10;
decimal val2 = 10;
decimal total;
total = val1 + val2; // this works
这也与
相同decimal total = val1 + val2; // an assignment.
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");
}
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;
这里很简单,因为你已经将变量定义为top,然后使用if
语句来定义这些变量是否设置。 这意味着他们可能没有价值。这是因为这一行
totalOiltLubeCharges_var = oilChange_var + lubeJob_var + oilLube_var;
您使用所有变量明确。但在该行之前,您有条件地为他们提供初始值。
因此,例如,如果lubeJobCheckBox.Checked
为false,则您的lubeJob_var
从未获得初始值。所以无法使用。
答案 1 :(得分:0)
此示例可能会对您有所帮助。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
decimal number1 = 53m;
decimal number2 = 33m;
decimal total;
total = number1 + number2;
Console.WriteLine(total);
}
}
}
答案 2 :(得分:-2)
您需要先为总数分配一些值。
decimal total=0;
或
decimal total = number1 + number2;