这个问题是怎么样的一个附加到这个的问题
在C#中,交换机案例无法通过其他情况,这会导致编译错误.在这种情况下,我只是在所选月份和之后的每个月的总月份中添加一些数字.(简单的例子,并不意味着真实)
switch (month) { case 0: add something to month totals case 1: add something to month totals case 2: add something to month totals default: break; }
在C#中是否有一个合乎逻辑的替代方案而不必写出大量的if语句?
if (month <= 0) add something to month if (month <= 1) add something to month if (month <= 2) add something to month .... etc
Ben Scheirma.. 11
通常,当您看到来自巨大的switch语句的噪声或许多if语句可能属于多个块时,您试图抑制糟糕的设计.
相反,如果您实现规范模式以查看是否匹配某些内容,然后对其采取行动,该怎么办?
foreach(MonthSpecification spec in this.MonthSpecifications) { if(spec.IsSatisfiedBy(month)) spec.Perform(month); }
然后你可以添加与你想要做的匹配的不同规格.
很难说出你的域名是什么,所以我的例子可能有点人为.
通常,当您看到来自巨大的switch语句的噪声或许多if语句可能属于多个块时,您试图抑制糟糕的设计.
相反,如果您实现规范模式以查看是否匹配某些内容,然后对其采取行动,该怎么办?
foreach(MonthSpecification spec in this.MonthSpecifications) { if(spec.IsSatisfiedBy(month)) spec.Perform(month); }
然后你可以添加与你想要做的匹配的不同规格.
很难说出你的域名是什么,所以我的例子可能有点人为.
在C#switch语句中,只有在您想要通过的情况没有声明时,才能通过案例
switch(myVar) { case 1: case 2: // Case 1 or 2 get here break; }
但是,如果你想要声明,你必须使用可怕的GOTO
switch(myVar) { case 1: // Case 1 statement goto case 2; case 2: // Case 1 or 2 get here break; }