考虑以下代码,第一个呼叫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)
为您提供了XYZ
的Type
。