有比这更好的替代“打开类型”吗?认为C#不能开关关于类型(我认为它不是作为特例添加的,因为is-关系意味着不止一个不同的关系)案例(可能适用),是否有更好的方法来模拟切换类型?void Foo(object o){
if (o is A)
{
((A)o).Hop();
}
else if (o is B)
{
((B)o).Skip();
}
else
{
throw new ArgumentException("Unexpected type: " + o.GetType());
}}
3 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
case
switch(shape){
case Circle c:
WriteLine($"circle with radius {c.Radius}");
break;
case Rectangle s when (s.Length == s.Height):
WriteLine($"{s.Length} x {s.Height} square");
break;
case Rectangle r:
WriteLine($"{r.Length} x {r.Height} rectangle");
break;
default:
WriteLine("<unknown shape>");
break;
case null:
throw new ArgumentNullException(nameof(shape));}switch(o.GetType().Name) {
case nameof(AType):
break;
case nameof(BType):
break;}switch(o.GetType().Name) {
case "AType":
break;}- 3 回答
- 0 关注
- 430 浏览
添加回答
举报
0/150
提交
取消
