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语句中给变量赋了一个值,那么它也应该起作用。为什么他们需要一开始就赋予价值?
感谢所有付出的努力。尊重!
使用未分配的局部变量意味着:
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从未给您初始值。所以你不能使用它。