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

问题描述 投票:1回答:1

我有这个代码:

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# types pattern-matching
1个回答
2
投票

在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),它对子类有影响。

© www.soinside.com 2019 - 2024. All rights reserved.