GamerDreemurr_X Asked:2022-08-13 19:53:35 +0000 UTC2022-08-13 19:53:35 +0000 UTC 2022-08-13 19:53:35 +0000 UTC C# | 为什么用 switch 检查枚举会出现奇怪的行为? 772 我正在使用 SoloLearn 应用程序进行编程,它具有类似 pvp 的编码。有人问了一个问题,您需要确定代码的输出是什么。在那里,在代码中创建了 enum Elements。在Main方法中,创建了一个值为 0 的变量。初始化此变量后,使用switch 语句检查Elements.Mg的值。在案例的帮助下,检查该值。如果值为Elements.K或Elements.Ca,那么我们初始化的变量被赋值为 1-2。有些案例是空的。代码的结果是它打印出数字 2(来自我们的变量)。为什么以及如何以及到底是什么? ps:截图见谅。在电话上,在重写代码时,我可能会犯错误。 c# 2 个回答 Voted Best Answer Scrim 2022-08-13T20:45:47Z2022-08-13T20:45:47Z 由于我不是很明白,我将尝试更详细地解释。未分配默认值的枚举对象将被分配一个从零开始的整数。那是: enum Elements { Na, // На самом деле равен 0 K, // На самом деле равен 1 Mg = 12, Ca // На самом деле равен 13, т.к. после 12 - 13 } 事实证明,如果我们为枚举主体分配一个值并不重要,它会被自动设置。你做一个switch(Elemenets.Mg)实际等于2的条件,也就是等于2的条件会被执行,switch有做嵌套case的能力,也就是如果条件落入一个case里面还有另外一个case , 那么这个case也会被执行。例如 switch (2) { case 2: case 1: Console.WriteLine("Кейс 1"); break; } 将显示在控制台上Кейс 1,因为 条件属于机箱所在的机箱,不用多想。而且你还有一个case Elements.Mgcase所在的条件Elements.Ca,给一个group等于2的变量赋值,这就是为什么控制台上显示2的原因。希望我解释的很详细,如果还有问题,请追问。 GamerDreemurr_X 2022-08-13T20:44:41Z2022-08-13T20:44:41Z 我想我了解 switch 运算符的工作原理。Ruby 可以这样写: X = 6 case X when 1, 2, 3, 4: puts "1-4" when 5, 6, 7: puts "5-7" 在记号笔上,你可以这样写: int X = 6; switch (X) { case 1: case 2: case 3: case 4: WriteLine("1-4"); break; case 5: case 6: case 7: WriteLine ("5-7"); break; } 如果我错过了什么,请写在评论中。
由于我不是很明白,我将尝试更详细地解释。未分配默认值的枚举对象将被分配一个从零开始的整数。那是:
事实证明,如果我们为枚举主体分配一个值并不重要,它会被自动设置。你做一个
switch(Elemenets.Mg)实际等于2的条件,也就是等于2的条件会被执行,switch有做嵌套case的能力,也就是如果条件落入一个case里面还有另外一个case , 那么这个case也会被执行。例如将显示在控制台上
Кейс 1,因为 条件属于机箱所在的机箱,不用多想。而且你还有一个case Elements.Mgcase所在的条件Elements.Ca,给一个group等于2的变量赋值,这就是为什么控制台上显示2的原因。希望我解释的很详细,如果还有问题,请追问。我想我了解 switch 运算符的工作原理。Ruby 可以这样写:
在记号笔上,你可以这样写:
如果我错过了什么,请写在评论中。