何时类型不是类型?错误:'是一种类型,在给定的上下文中无效'

R4D*_*4D4 1 c# types typeof

考虑下面的代码,第一次调用AcceptType1编译好,但第二次调用AcceptType1(XYZ);失败.具体错误是:

错误CS0119'XYZ'是一种类型,在给定的上下文中无效

我不理解错误消息背后的细节,从而我无法理解为什么第二次调用失败,如果它XYZ是一个AcceptType1接受的类型.如果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());
    }

}
Run Code Online (Sandbox Code Playgroud)

Dan*_*ite 7

XYZ是班级的象征或名称XYZ.typeof将获取有关类型的运行时信息,即System.Type.您还可以使用泛型传递类型符号,这不适用于typeof:

AcceptType1<T>()
Run Code Online (Sandbox Code Playgroud)

在哪里T可以用类型符号或名称填写.