什么时候类型不是类型?错误:'is a type, which is not valid in the given context'



考虑以下代码,第一个呼叫AcceptType1汇总了罚款,但是AcceptType1(XYZ);的第二个调用失败。具体错误是:

错误cs0119'xyz'是一种类型,在给定上下文中无效

我不了解错误消息背后的细节,因此我无法理解为什么XYZAcceptType1所接受的类型,为什么第二个呼叫失败。如果XYZ是一种类型,那么为什么需要致电typeof

public class XYZ
{
}
public class Tester
{
    public void RunTest()
    {
        AcceptType1(typeof(XYZ));
        AcceptType1(XYZ);
    }
    private void AcceptType1(Type t)
    {
        Console.WriteLine(t.ToString());
    }
}

XYZ是类XYZ的符号或名称。typeof将获取有关类型的运行时信息,即System.Type。您还可以通过仿制药传递类型符号,该符号与typeof不起作用:

AcceptType1<T>()

可以用类型的符号或名称填充T

XYZ可能是一种类型,但不是Type,这是您的方法所期望的参数。typeof(XYZ)为您提供了XYZType

相关内容

最新更新