在 C# 中使用 If 和 Switch 等条件语句
介绍
计算机程序是一组按顺序逐一执行的指令,这一概念对于任何刚开始编程的人来说都很熟悉。这个定义虽然有助于入门,但并未考虑到经常需要做出决策。如果我们记住任何有用的软件都必然需要这样做,我们就能更好地理解当今的计算机程序是什么。
为了说明如何根据各种条件执行不同部分的代码,在本指南中,我们将使用C# 中的if / else和switch / case语句编写一个简单的控制台应用程序。
如果您想继续,您可以使用Visual Studio Community或专业版,我们假设在开始之前您的本地机器上已经安装了该版本。或者,如果您使用的是移动设备,在线 C# 编译器(如.NET Fiddle)会派上用场。
为简单起见,以下示例中的变量具有硬编码值。然而,在实际应用中,它们是在最终用户与程序交互时设置的,例如单击复选框或在框中输入文本(仅举两个例子)。
介绍 if / else 结构
想象一下以下场景。您需要根据求职者是否接受贵公司的条款和政策来确定其是否符合资格。如果该人回答“是”,招聘流程可以继续。否则,将显示一条礼貌的消息,说明无法处理该申请。
为了解决这个问题,请在Main()函数中输入以下代码:
bool agrees;
agrees = true;
if (agrees)
{
Console.WriteLine("The application may continue.");
}
else
{
Console.WriteLine("Thank you for your interest, but we are unable to process your application at this time.");
Console.WriteLine("Have a nice day.");
}
// Add the following line to prevent the application from closing automatically
Console.ReadLine();
执行时,上述代码应产生如图 1 所示的输出:
让我们详细检查一下该程序正在做什么:
声明了一个名为grees的布尔变量,随后将其赋值为true。当然,您也可以在同一行中执行这两个步骤,如boolgrees=true,这取决于个人喜好。
if语句在括号内附带条件检查。由于我们处理的是布尔变量,因此if (agrees)与if (agrees == true)相同,其中为了简洁起见,首选第一个选项。然后是一组花括号,其中包含当条件评估为true时要执行的代码(显示一条简短消息,文本为“应用程序可以继续”)。
当条件计算结果为false时,将执行else子句后面的代码。
在if / else之外,我们可以编写无论上述条件检查如何都会运行的代码。在本例中,Console.ReadLine();会阻止控制台窗口自动关闭,直到我们按下 Enter 键。
现在,让我们考虑另一种情况。假设我们正在使用代码测试温度范围并执行以下操作:
如果温度低于 65 °F,则在屏幕上打印外面很冷! 。
当温度大于或等于 65 °F且小于 80 °F 时,我们会说这是美好的一天!
否则,我们会显示消息“您需要短裤和凉鞋!”
我们将遵循与之前基本相同的结构,仅在if块后添加一个else if子句。图 2 显示了以下代码的输出。
int temperature = 70;
if (temperature < 65)
{
Console.WriteLine("It is cold outside!");
}
else if (temperature >= 65 && temperature < 80)
{
Console.WriteLine("It is a wonderful day!");
}
else
{
Console.WriteLine("You'll need shorts and sandals!");
}
除了else if块之外,上述代码还引入了&&(AND)逻辑运算符。当两个表达式都成立时,条件才为真。
总而言之,使用if块来封装在满足条件时应执行的代码。或者,在else关键字后面添加一对花括号来封装否则将运行的代码。此外,如果您需要尝试另一种替代方案,请使用else if 。无论如何,请记住,我们最终测试的条件可以是真也可以是假。此类条件可能以单个布尔变量或涉及关系或逻辑运算符的更复杂表达式的形式出现。
使用 Switch 和 Case 测试多个条件
尽管你可以使用任意数量的else if块,但两个或多个 else if 块很容易导致代码难以阅读。这就是switch / case结构发挥作用的地方。
首先,我们将输入switch语句,后面跟着括号内要测试的变量,如图 3 所示。接下来,一系列case根据该变量的值控制执行流程。每个 case 都以break关键字结尾,该关键字告诉程序退出switch块。或者,您可以添加 default 子句来指示当前面的所有 case 都不适用时应该运行哪些代码。
string job = "developer";
switch(job)
{
case "engineer":
Console.WriteLine("The engineer has been, and is, a maker of history.");
break;
case "developer":
Console.WriteLine("One of the best programming skills you can have is knowing when to walk away for awhile.");
break;
case "analyst":
Console.WriteLine("Leadership is solving problems.");
break;
default:
Console.WriteLine("I'm sorry. We could not find a quote for your job.");
break;
}
我们可以使用以下代码实现与上述相同的解决方案,但您会注意到它不那么容易阅读 - 更不用说如果有更多的替代方案需要检查:
string job = "developer";
if (job == "engineer")
{
Console.WriteLine("The engineer has been, and is, a maker of history.");
}
else if (job == "developer")
{
Console.WriteLine("One of the best programming skills you can have is knowing when to walk away for awhile.");
}
else if (job == "analyst")
{
Console.WriteLine("Leadership is solving problems.");
}
else
{
Console.WriteLine("I'm sorry. We could not find a quote for your job.");
}
因此,如果结果相同,问题就不可避免地出现了。我们什么时候应该使用常规的if / else if / else结构或switch / case?经验法则是:如果您需要多个else if块,请不要使用前者。您以后会感谢自己,阅读和维护您的代码的其他开发人员也会感谢自己。
概括
如您所见,您可以使用熟悉的事物和流程来学习编程概念,然后轻松地将这些知识应用于各种场景,更重要的是,满足您的特定需求。此外,您始终可以在 Microsoft 文档网站中查阅if-else和switch-case参考。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~