我有一个反复执行一些逻辑的switch语句。而不是使用剪切和粘贴我想把它放到一个函数中,但是我在这方面做得不好。方法内部的分隔标记
这是我想要做的,但它不会编译,因为函数中的break标记不存在。任何人都可以重构这个更好的工作版本?
switch(param.ToString())
{
case "1":
BreakIfNotArgumentType<B>(param);
//do stuff
break;
case "2":
BreakIfNotArgumentType<BF>(param);
//do stuff
break;
}
private T BreakIfNotArgumentType<T>(object argumentObject)
{
if (argumentObject is T)
{
return (T)argumentObject;
}
else
{
break;
}
}
异常解决方案很有趣,但有性能方面的问题,它确实不是一个特例;预计每个switch语句至少会发生一次。因此,我更喜欢null解决方案。 – 2009-08-17 15:58:22
这很好,我只是认为应该考虑异常解决方案,好像有某种特定类型的东西需要以某种方式实施。 null解决方案更加优雅,尽管它确实会让调用此函数的代码知道可以返回null。 – 2009-08-17 16:13:53
@JB:异常解决方案还会使调用该函数的代码意识到可以抛出异常,无论如何也难以知道(或推断)的可能性比空。 – 2009-08-17 16:32:24