所以我们可以在 switch 语句上做一个 fallthrough,我们可以在 object 类型上做 switch 语句,但是有没有办法对 object 类型做一个 fallthrough,这样我们就可以说“如果是这些类型的对象中的任何一个,调用这个方法,通过在对象中,我会在那里处理它”?
通常情况下,每个 case 语句必须有一个唯一的变量名,因此使用相同的变量名似乎不适合这里,但如果我可以基于as
强制转换进行空值检查,那将起作用,所以我知道要发送哪个。
例如:
switch (myObject){
... //other cases
case MyObjectType1 myObjectType1 :
case MyObjectType2 myObjectType2 :
case MyObjectType3 myObjectType3 :
case MyObjectType4 myObjectType4 :
var objectEvent = myObjectType1; //error here
///some other magic here
HandleMyObjectTypes(myObjectType);
break;
}
我遇到的问题是Use of unassigned local variable 'myObjectType1'
,我什至不能as
为空检查进行强制转换,这样我就可以抓住它真正的样子,这样我就可以将它交给我对那些特定类型的处理方法。这里的困难是我不能重构整个当前的方法来支持这种模式方法。
我确定我缺少一些简单的模式或概念,但它是什么?
编辑:我想做的是:
switch (myObject){
... //other cases
case MyObjectType1 myObjectType1 :
case MyObjectType2 myObjectType2 :
case MyObjectType3 myObjectType3 :
case MyObjectType4 myObjectType4 :
var objectEvent = myObjectType1 ?? myObjectType2;
objectEvent = objectEvent ?? myObjectType3;
objectEvent = objectEvent ?? myObjectType4;
HandleMyObjectTypes(objectEvent);
break;
}