有比這更好的替代“打開類型”嗎?認為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 關注
- 421 瀏覽
添加回答
舉報
0/150
提交
取消