C#开关表达式是否可以简单地用于避免输入中断命令?
我有这个代码,我想知道。是否可以将其更改为使用新的C#表达式,以消除对C#开关表达式是否可以简单地用于避免输入中断命令?,c#,C#,我有这个代码,我想知道。是否可以将其更改为使用新的C#表达式,以消除对中断的需要 switch (reposition) { case (int)POS.First: cIndex = 0; break; case (int)POS.Last: cIndex = cIndexLast; break; case (int)POS.Prev: cIndex--; break; case (int)POS.Next: cIndex++; break; } reposit
中断的需要代码>
switch (reposition)
{
case (int)POS.First: cIndex = 0; break;
case (int)POS.Last: cIndex = cIndexLast; break;
case (int)POS.Prev: cIndex--; break;
case (int)POS.Next: cIndex++; break;
}
reposition = null;
对霍根的回应
唯一的问题是你不能使用--
和++
cIndex = (POS)resposition switch
{
POS.First => 0,
POS.Last => cIndexLast,
POS.Prev => cIndex-1,
POS.Next => cIndex+1
};
关于未涵盖的重新评论-这里我们将对POS进行铸造,以便涵盖POS中的所有案例。在此之前,您应该编写代码,以检查并查看“重新定位”的数值是否在pos的范围内。(或者,如果您编写代码,则无需担心。)
你可以用
if (POS.IsDefined(typeof(POS), resposition) { ... }
帽子提示非常感谢,Hit给了我一条消息,说开关表达式不能处理所有可能的输入。你对我如何解决这个问题有什么建议吗?谢谢什么是POS?你似乎没有涵盖其中所有可能的统计员。如果您不想涵盖任何其他内容,请使用下划线作为默认值:\u=>throw new NotSupportedException()
public enum POS{First=0,Prev=1,Next=2,Last=3}我认为不需要强制转换为int,也许这会让您感到厌烦。