我有这段代码:
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()
会返回一个类型,不是吗?
答案 0 :(得分:2)
在C#7中,switch语句可用于模式匹配类型:
Sub Test()
For i = 2 To ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
Range("VO" & i).Value = Application.WorksheetFunction.Max(Range("U2:VN2"))
Next i
End Sub
如果List的基类型不是worker类型,则更有意义。此外,对分支的测试是List<Worker> workers;
public void PrintWages()
{
foreach (var worker in workers)
{
switch (worker)
{
case Worker w:
// w will be of type Worker
break;
}
}
}
而不是worker is Worker
,这对子类有影响。