我目前正在为此代码添加一些新的扩展类:
foreach (BaseType b in CollectionOfExtendedTypes) { if (b is ExtendedType1) { ((ExtendedType1) b).foo = this; } else if (b is ExtendedType2) { ((ExtenedType2) b).foo = this; } else { b.foo = this; } }
并且好奇是否有办法is
在switch语句中使用关键字功能?
这看起来像是一个良好的多态实现的情况.如果覆盖派生类中的相应方法,则可能根本不需要循环中的检查.
最新版本的C#(7)现在包含此功能
键入模式
类型模式可以实现简洁的类型评估和转换.当与switch语句一起使用以执行模式匹配时,它会测试表达式是否可以转换为指定的类型,如果可以,则将其转换为该类型的变量.它的语法是:
case type varname
不.看到
C#switch语句限制 - 为什么?