c# - 使用相同的变量名或空检查切换对象类型失败?
问题描述
所以我们可以在 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;
}
解决方案
推荐阅读
- reactjs - 仅在点击屏幕时检测到状态变化
- sql - 在地址字段中的房屋编号前插入逗号
- google-app-engine - 通过 Node.js 进行 AppEngine 身份验证
- sql - 如何正确过滤sqlite数据库中的数据?
- html - 在 HTML 页面上显示收到的 gstreamer mjpeg
- wordpress - 如何将自定义 HTML 表单与 wordpress 电子邮件地址连接起来
- javascript - 使用 Selenium 从脚本中抓取 JSON
- go - 具有嵌套负载的 JSON 绑定
- python-3.x - 为什么我会收到此错误 - KeyError: ('datetime64[ns]', 'left')?
- javascript - 通过一点的平行线