C# 从if/else语句中获取值?

C# 从if/else语句中获取值?,c#,if-statement,scope,C#,If Statement,Scope,如果我有一系列像这样的If/else语句,我想得到一个特定的值,那么我如何在方程之外访问该值?我让所有的东西都通过命令提示符,没有任何额外的类 if (shippingInput == 1) { double shippingAmount = shippingDetails * 3; } else if (shippingInput == 2) { double shippingAmount = shippingDetails * 4; } else { double s

如果我有一系列像这样的If/else语句,我想得到一个特定的值,那么我如何在方程之外访问该值?我让所有的东西都通过命令提示符,没有任何额外的类

if (shippingInput == 1)
{
    double shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    double shippingAmount = shippingDetails * 4;
}
else
{
    double shippingAmount = shippingDetails * 5.5;
}
在代码的末尾,我有

double shippingCost = shippingAmount + surcharge;
但它表示,“发货金额”和“附加费”这两个名称在当前上下文中并不存在


谢谢你的帮助!我还不能给出答案,但在将语句声明在if/else括号之外并从每个括号中删除double之后,它就完美地工作了。

您每次都在创建新的变量。这样声明一次:

double shippingAmount;

if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
else
{
    shippingAmount = shippingDetails * 5.5;
}

您每次都在创建新的变量。这样声明一次:

double shippingAmount;

if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
else
{
    shippingAmount = shippingDetails * 5.5;
}

在语句之前声明变量,并使用默认值(来自逻辑的
else
部分):


在语句之前声明变量,并使用默认值(来自逻辑的
else
部分):


您必须声明
shippingAmount
不在if/else范围内:

double shippingAmount = 0;

if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
else
{
    shippingAmount = shippingDetails * 5.5;
}

您必须声明
shippingAmount
不在if/else范围内:

double shippingAmount = 0;

if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
else
{
    shippingAmount = shippingDetails * 5.5;
}

您需要在语句之外定义变量

double shippingAmount;


/*some more logic*/

if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
else
{
    shippingAmount = shippingDetails * 5.5;
}

通过在if/else语句中定义变量,它们只存在于花括号上下文中,因此一旦您走出代码块,就无法访问。

您需要在语句之外定义变量

double shippingAmount;


/*some more logic*/

if (shippingInput == 1)
{
    shippingAmount = shippingDetails * 3;
}
else if (shippingInput == 2)
{
    shippingAmount = shippingDetails * 4;
}
else
{
    shippingAmount = shippingDetails * 5.5;
}
通过在if/else语句中定义变量,它们只存在于花括号上下文中,因此,一旦您跳出代码块,就无法访问它们。

这就是如何做到的

var shippingAmount = (shippingInput == 1) ? shippingDetails * 3 :
                     (shippingInput == 2) ? shippingDetails * 4 :
                                            shippingDetails * 5.5;
你就是这样做的

var shippingAmount = (shippingInput == 1) ? shippingDetails * 3 :
                     (shippingInput == 2) ? shippingDetails * 4 :
                                            shippingDetails * 5.5;

您可以对代码进行如下改进:


您可以对代码进行如下改进:



我建议使用“disposed”以外的词,它在.net中有特定的含义(与
IDisposable
)相关。好的,我已经更正了措辞。感谢您的提醒。我建议使用“disposed”以外的词,该词在.net中有特定含义(与
IDisposable
)相关)。好的,我已经更正了该词。谢谢你的提醒。哦,谢谢,我试过这么做,但是后来收到了更多的错误。我没有想到我是如何分配双倍的每个出货量。一旦我从每个if/else if块中删除了double,它就工作得很好。谢谢你的帮助@user2781666-没问题,但请记住——您并没有分配double,而是每次声明(与创建)一个新变量。需要理解的重要区别。对,感谢您的澄清。我没有意识到这就像每次都声明一个新变量。这在将来肯定会有帮助。哦,谢谢,我试过这么做,但后来收到了更多的错误。我没有想到我是如何分配双倍的每个出货量。一旦我从每个if/else if块中删除了double,它就工作得很好。谢谢你的帮助@user2781666-没问题,但请记住——您并没有分配double,而是每次声明(与创建)一个新变量。需要理解的重要区别。对,感谢您的澄清。我没有意识到这就像每次都声明一个新变量。这在将来肯定会有帮助。如果在块构造(如If语句)中声明一个变量,则该变量的作用域仅限于块的末尾。如果在块构造(如If语句)中声明变量,则该变量的作用域仅限于块的末尾。请不要在生产中实际使用这种代码。它的可读性不强。虽然它完全有效,但可能会很快变得复杂/难以阅读。另外,这样做只能设置一个变量。@Mario在他的例子中,我没有看到他设置多个变量。空间对源代码来说并不重要。这可能是一个最小的例子来说明这个问题。实际上,可能会同时应用或设置不同的内容。想象一下,基于相同选择的不同运输成本。@Steve编译器足够聪明,可以使这两个语句的速度和长度都一样快。源代码的可读性比源代码的长度重要得多。请不要在生产中实际使用这种代码。它的可读性不强。虽然它完全有效,但可能会很快变得复杂/难以阅读。另外,这样做只能设置一个变量。@Mario在他的例子中,我没有看到他设置多个变量。空间对源代码来说并不重要。这可能是一个最小的例子来说明这个问题。实际上,可能会同时应用或设置不同的内容。想象一下,基于相同选择的不同运输成本。@Steve编译器足够聪明,可以使这两个语句的速度和长度都一样快。源代码可读性比源代码长度重要得多