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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了何时类型不是类型?错误:'是一种类型,在给定的上下文中无效'相关的知识,希望对你有一定的参考价值。

考虑以下代码,第一次调用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());
    }

}
答案

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

AcceptType1<T>()

其中T可以用类型符号或名称填写。

另一答案

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

以上是关于何时类型不是类型?错误:'是一种类型,在给定的上下文中无效'的主要内容,如果未能解决你的问题,请参考以下文章

js函数参数数据类型都有哪些?

为新类型实现 Deref 是不是被认为是一种不好的做法?

C++中函数模板怎么用

jQuery插件不起作用……“类型错误:'undefined'不是一个函数”

类型错误未定义不是对象(正在评估'Wu.getRandomValues')

java.sql.Types.JSON 不是默认的 JDBC 类型