我有这个代码:
class SalaryCalculator
{
List<Worker> workers;
public void PrintWages()
{
foreach (var worker in Workers)
{
switch (worker.GetType())
{
case Worker: // THIS LINE
break;
}
}
}
// Other code
}
我评论的行给了我错误:
'Worker'是一种类型,在给定的上下文中无效。
为什么我会收到此错误? GetType()
返回一种类型,不是吗?
在C#7中,switch语句可用于模式匹配类型:
List<Worker> workers;
public void PrintWages()
{
foreach (var worker in workers)
{
switch (worker)
{
case Worker w:
// w will be of type Worker
break;
}
}
}
如果List的基类型不是worker类型,则更有意义。对分支的测试是worker is Worker
而不是worker.GetType() == typeof(Worker)
,它对子类有影响。