一、if语句(条件判断)

就像做选择题

  • 如果满足某个条件,就执行这段段代码;
  • 如果不满足,就跳过这段代码。

我用一个买东西的小情景剧来给小伙伴儿们讲讲if语句。

** 想象我们正在编导一出小米专卖店购物情景剧剧:**

int price = 1899;                    // 商品价格标签:小米AI眼镜1899元
int yourMoney = 2000;               // 你的小钱包里有多少钱
string wordsSpoken = "店员:\"小米AI眼镜1899元;您需要买一副吗?\"";  // 店员的台词
Console.WriteLine(wordsSpoken);     // 店员开口说话啦!

剧情发展:关键的“如果”时刻来了!

if (yourMoney >= price)             // 如果你小钱包里的钱 ≥ 眼镜价格
{
    Console.WriteLine("你说:\"买一副。\"");  // 就愉快地买下!
}
  • if:就像一个决策小管家,它只做一件事——检查小钱包里的钱够不够。
    yourMoney >= price:这是小管家的判断法则。这里的 >=是“大于或等于”的符号,意思是“钱够吗?”。
  • 大括号 { }:像是一个行动指令包。如果小管家判断“钱够!”条件为true(真),就会执行这个大括号里的所有指令。这里只有一条指令,就是说“买一副”。
    因为2000元确实大于1899元,所以程序运行后,店员会先问,然后你会决定购买。控制台最终的输出结果是:

店员:“小米AI眼镜1899元;您需要买一副吗?”
你说:“买一副。”
在这里插入图片描述

  • 在C#代码里看到的这个\",是一个转义字符。可以把它想象成一个“魔法符号”,它的作用就是告诉计算机:“喂,我后面这个引号不是代码的结束标记,而是我真正想显示的文字的一部分!”
  • 你可以把**反斜杠 \想象成一个 “取消键”。当它放在一个特殊符号(比如引号)前面时,就取消了那个符号的特殊功能,让它变回一个普通的字符。

常见的“魔法符号”家族成员

除了 \",C#里还有其他几个常用的转义字符,它们都以反斜杠 \ 开头:

转义序列 含义 例子
\" 双引号 "他说:\"是的。\"" → 输出:他说:"是的。"
\' 单引号 '\'' → 一个字符:'
\\ 反斜杠本身 "C:\\Users\\Name" → 路径:C:\Users\Name
\n 换行符 "第一行\n第二行" → 输出两行文字
\t 制表符(Tab) "姓名\t年龄" → 输出时会有一个Tab间隔

喂!醒醒,做了半天的美梦了!你想过一个问题吗?如果钱不够呢?

现在,想想看,如果你的小钱包里只有 1500元,if语句还会执行大括号里的“买一副”指令吗?为什么?

二、else语句(反向判断)

if和 else是好搭档

故事里只用了 if。其实,if经常和 else一起用,就像说“如果……否则……”。比如,我们可以让情景剧更完整:

if (yourMoney >= price)
{
    Console.WriteLine("你说:\"买一副。\"");  //开心地拿到新眼镜!
}
else
{
    Console.WriteLine("你说:\"钱不够,下次再买吧。\"");  //有点小遗憾~
}

这样,无论钱够不够,程序都会有不同的反应,就像故事有不同的结局!
希望这个小情景剧能帮你理解这段代码!编程就像编故事,if语句能帮我们设计不同的情节发展。试试把 yourMoney的值改成1500,看看会有什么不同吧!
在这里插入图片描述
我们已经学习到第四章了,代码中经常出现的像“伏地魔” 一样躲在行尾的 类似//开心地拿到新眼镜!//有点小遗憾~这样的东西是什么?,在编程世界里,我们称之为 代码注释。它们就像是藏在代码里的“魔法笔记”,专门写给我们这些阅读代码的人看的,而计算机在执行代码时则会像麻瓜一样完全忽略它们。

注释主要有两个核心作用:

  • 解释说明:用来解释某一行或某一段代码是做什么的,让代码更容易被理解。在情景剧的代码里,它们生动地说明了在不同条件下程序输出对应语句时,用户的心情。
  • 调试辅助:在测试代码时,可以临时用注释 “屏蔽” 掉一些代码行,让计算机不执行它们,从而帮助定位问题。

注释的语法规则很简单

  • 单行注释:以两个斜杠 //开头,它之后直到本行结束的内容都会被视为注释,计算机会忽略这些内容。
  • 还有一种多行注释,用/*开始,*/结束,可以跨越多行。

下面我们让情景剧更复杂一点:

如果满足两个条件(比如你的小钱包里有1500元,而且你还是是会员),才可以买到小米AI眼镜:

int price = 1899;                   // 商品价格标签:小米AI眼镜1899元
int memberPrice=1500;               // 会员价1500元
int yourMoney = 1500;               // 你的小钱包里有多少钱
bool isMember = true;               // 是否是会员->true代表是(真)
string wordsSpoken = "店员:\"小米AI眼镜1899元,如果您是会员,只需要1500元,您需要买一副吗?\"";  // 店员的台词
Console.WriteLine(wordsSpoken);     // 店员开口说话啦!
if (yourMoney >= memberPrice && isMember==true )      // 你的小钱包里有1500元,而且你还是会员
{
    Console.WriteLine("你说:\"买一副。\"");  // 就愉快地买下!
}
else
{
    Console.WriteLine("你说:\"钱不够,下次再买吧。\"");  //有点小遗憾~
} 

在这里插入图片描述
择日不如撞日,至此良辰美景我们顺便来聊聊两位 “逻辑判官”

严谨的守门员:&&(逻辑与)**

在代码中:if (yourMoney >= memberPrice && isMember == true)
这一行里的 &&,就像一个严谨的守门员,它的规则非常严格:它两边的条件都必须为true(真),整个表达式才为真。
运算规则: 条件1 && 条件2,只有当“条件1”和“条件2”同时为 true时,结果才是 true。只要有一个是 false,结果就是 false。
短路特性: 这个守门员还很聪明,他会“短路求值”。意思是,他会先检查左边的条件(yourMoney >= memberPrice)。如果发现你的钱根本不够(左边条件为 false),他就会立刻做出决定——“不通过”!并且根本不会再去检查你到底是不是会员(右边的 isMember==true条件)。这样可以提高效率,避免执行不必要的检查。
在情景剧例子中,正是因为你的钱(1500元)等于会员价(1500元)并且你是会员,两个条件都满足,守门员 &&才放行,执行了 if分支里的购买操作。

灵活的通融者:||(逻辑或)**

现在,我们来给情景剧加个新情节,看看 ||如何登场。假设小米专卖店有个促销活动:或者是会员,或者有优惠券,都可以享受会员价。
我们修改一下代码:

int price = 1899;
int memberPrice = 1500;
int yourMoney = 1500;
bool isMember = true;
bool hasCoupon = false; // 新增:代表没有优惠券

string wordsSpoken = "店员:\"小米AI眼镜1899元,如果您是会员或者有优惠券,只需要1500元!您需要买一副吗?\"";
Console.WriteLine(wordsSpoken);

if (yourMoney >= memberPrice && (isMember == true || hasCoupon == true)) // 组合使用
{
    Console.WriteLine("你说:\"太好了,买一副!\"");
}
else
{
    Console.WriteLine("你说:\"真遗憾,下次再买吧。\"");
}

在这里插入图片描述
这里的 ||,就像一个灵活的通融者,它的规则是:它两边的条件只要有一个为真,整个表达式就为真。
运算规则: 条件1 || 条件2,只要“条件1”或“条件2”中有一个是 true,结果就是 true。只有当两个都是 false时,结果才是 false。
短路特性: ||也有“短路”特性。如果它发现左边条件(isMember == true)已经是 true,它就会立刻得出“通过”的结论,而不会再去检查右边是否有优惠券(hasCoupon)的条件 。

&&和 ||这对儿条件运算符就像是编程世界里的逻辑积木,帮你搭建出各种复杂的判断条件。

相等和比较运算符

你可以把 == 和 ! = 想象成程序世界里的“大家来找茬”小工具:==负责找“相同”,找到就开心地喊“对!”(True);!=负责找“不同”,找到就得意地说“不!”(False)。它们的工作就是做出判断并给出一个非真即假的明确答案 。

在使用时,有一个非常重要的细节需要注意:一个等号 =和两个等号 ==有天壤之别。

  • =是赋值运算符,它的作用像是把东西放进盒子里。比如 int price = 1899;意思是“把数字1899装进名为pricer的盒子里”。

  • ==是比较运算符,它的作用像是比较两个东西是否相同。比如 if (pricer == 1899)意思是“检查一下price盒子里的东西和1899一样吗?”

如果在该用 ==进行比较的地方误用了 =,程序逻辑就会出错。希望你可以在欢乐中牢牢记住 ==和 !=的用法!

运算符 读音 生活化比喻(好比) 举个栗子 🌰
== 等于 “长得一模一样吗?” 1899 == 1899true(对,它俩都是1899)
!= 不等于 “长得不一样吗?” 1500 != 1899true(对,它俩不一样)
< 小于 “我比你矮/少吗?” 1500 < 1899true(对,1500比1899小)
> 大于 “我比你高/多吗?” 1899 > 1500true(对,1899比1500大)
<= 小于等于 “我不比你高/多吗?”(包含等于) 1500 <=1500true(对,我们一样“大”)
>= 大于等于 “我不比你矮/少吗?”(包含等于) 1500 >= 1500true(对,我们一样“大”)
  • 比较枚举成员时,实际上比较的是其底层对应的整数值,枚举又是什么东西?我们以后再讲。

三、while循环(重复做一件事)*

就像重复数数

int counter = 0;  
while (counter < 10)  
{  
    Console.WriteLine($"第{counter}次!");  
    counter++;  
}  
  • counter < 10是条件,只要满足就继续执行;
  • counter++是让计数器每次加1,当条件为false(假)时会停止。
    在这里插入图片描述
int counter = 0;
do
{
    Console.WriteLine($"Hello 北海! The counter is {counter}");
    counter++;
} while (counter < 10);

循环会在 while 前先测试条件,然后再执行后续 while 代码。 do while 循环首先执行代码,然后检查条件。
在这里插入图片描述


四、for循环(精确控制次数)**

就像排队买东西

for (int i = 1; i <= 10; i++)  
{  
    Console.WriteLine($"第{i}个苹果!");  
}  
  • int i = 1是初始化(从1开始);
  • i <= 10是条件(循环到10为止);
  • i++是每轮加1。
    在这里插入图片描述

五、嵌套循环(生成表格)**

就像画网格

for (int row = 1; row <= 3; row++)  
{  
    for (char col = 'A'; col <= 'C'; col++)  
    {  
        Console.WriteLine($"({row}, {col})");  
    }  
}  

输出

(1, A)  
(1, B)  
(1, C)  
(2, A)  
(2, B)  
(2, C)  
(3, A)  
(3, B)  
(3, C)  

六、实战练习(求1到20中能被3整除的数之和)**

  • 找出1到20中能被3整除的数(如3、6、9…);
  • 把它们加起来,最后得到总和。
int sum = 0;  
for (int i = 1; i <= 20; i++)  
{  
    if (i % 3 == 0)  // 如果i能被3整除  
        sum += i;     // 把i加到sum里  
}  
Console.WriteLine("总和是:" + sum);  
总和是:63  

在这里插入图片描述


C#的if和循环到底在做什么?

概念 通俗解释
if 像开关,满足条件就执行代码
else 不满足条件就执行另一段代码
while 反复做一件事,直到条件不满足
for 精确控制循环次数(比如数1到10)
嵌套循环 像画网格,外层循环控制行,内层循环控制列

  • if循环是编程的“基础工具”,就像搭积木一样,组合起来能做很多事;
  • 多动手写代码,哪怕错了也没关系,编程就是不断试错的过程!
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐