繁体   English   中英

是否可以使用多个 if 返回多个值? C#

[英]Is it possible to return multiple values with multiple ifs? C#

    double GPoint = 0, GPer;
    string Des = null;
    
    Console.WriteLine("Enter your Equivalence Grade");
    GPer = double.Parse(Console.ReadLine());
    
    if (GPer >= 95 && GPer <= 100)
        GPoint = 1.00;
        Des = "Excellent";
    
    if (GPer >= 91 && GPer <= 94)
        GPoint = 1.25;
        Des = "Superior";
    
    if (GPer >= 88 && GPer <= 90)
        GPoint = 1.50;
        Des = "Very Good";
    
    if (GPer >= 86 && GPer <= 87)
        GPoint = 1.75;
        Des = "Good";
    
    if (GPer >= 84 && GPer <= 85)
        GPoint = 2.00;
        Des = "Very Satisfactory";
    
    Console.WriteLine( "Your final grade is {0}, a {1} Grade."
                      ,GPoint
                      ,Des);

它只正确地执行第一个变量,但第二个值总是打印最后一个 if 语句。 所以它总是对任何值返回“非常满意”。

首先,在现代 C# 中,我可能会使用 switch 表达式和元组来执行此操作(并且我还会将局部变量名称更改为更有意义和惯用大小写)......但撇开这一点不谈,眼前的问题是您的缩进表明您认为:

if (GPer >= 88 && GPer <= 90)
   GPoint = 1.50;
   Des = "Very Good";

...只有在满足条件时才分配Des 这不是真的。 该代码等效于:

if (GPer >= 88 && GPer <= 90)
{
   GPoint = 1.50;
}
Des = "Very Good";

如果您的if语句体需要包含多个语句,则需要使用块体。 我个人建议始终使用块主体,即使主体只是一个语句,但这是编码风格的问题。 您可以通过对所有if语句使用块体来修复代码,例如

if (GPer >= 88 && GPer <= 90)
{
   GPoint = 1.50;
   Des = "Very Good";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM