有比这更好的替代“打开类型”吗?认为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 关注
- 395 浏览
添加回答
举报
0/150
提交
取消