错误:'Worker'是一种类型,在给定的上下文中无效。“

时间:2018-01-19 18:11:02

标签: c# types pattern-matching

我有这段代码:

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()会返回一个类型,不是吗?

1 个答案:

答案 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,这对子类有影响。