(Type) 和 Get.Type() 有什么区别
What's the different between (Type) and Get.Type()
为什么在同一对象上调用它们时两者不同?
protected override Type GetType(MethodInfo methodInfo, object[] arguments)
{
var typeOne = (Type)arugments.Single();
Debug.WriteLine(typeOne.ToString()); // This gives me NewWorld.OldWorld.Class
var typeTwo = arugments.Single().GetType();
Debug.WriteLine(typeTwo.ToString()); // This gives me System.RuntimeType
return typeOne;
}
这将真正元...
假设你的 arguments
实际上是一个 Type
的数组,表达式 (Type)arguments.Single()
使单个参数的编译时类型变为 Type
.
类型Type
表示一个类型。在这种情况下,您得到 NewWorld.OldWorld.Class
,这很可能是 class 的完全限定名称。 arguments
中的单个元素(属于 Type
类型)表示类型 NewWord.OldWorld.Class
.
第二个表达式 arguments.Single().GetType()
获取调用 GetType
的对象的运行时类型,作为 Type
的实例。在这种情况下,这将 return arguments.Single()
的运行时类型,即 RuntimeType
,Type
的子 class。
基本上:
(Type)arguments.Single()
告诉编译器 arguments
包含类型为 Type
的单个元素。它的计算结果为 Type
表示 NewWord.OldWord.Class
的对象。
arguments.Single().GetType()
获取 argument.Single()
的 类型 。这与 arguments.Single()
代表的类型 不 相同。它代表类型Class
,但它的类型是RuntimeType
。如果您仍然感到困惑,这里有一个整数示例。
int[] array = new int[] { 10 };
array.Single()
代表 数字 10 但它的 类型 是 System.Int32
.
为什么在同一对象上调用它们时两者不同?
protected override Type GetType(MethodInfo methodInfo, object[] arguments)
{
var typeOne = (Type)arugments.Single();
Debug.WriteLine(typeOne.ToString()); // This gives me NewWorld.OldWorld.Class
var typeTwo = arugments.Single().GetType();
Debug.WriteLine(typeTwo.ToString()); // This gives me System.RuntimeType
return typeOne;
}
这将真正元...
假设你的 arguments
实际上是一个 Type
的数组,表达式 (Type)arguments.Single()
使单个参数的编译时类型变为 Type
.
类型Type
表示一个类型。在这种情况下,您得到 NewWorld.OldWorld.Class
,这很可能是 class 的完全限定名称。 arguments
中的单个元素(属于 Type
类型)表示类型 NewWord.OldWorld.Class
.
第二个表达式 arguments.Single().GetType()
获取调用 GetType
的对象的运行时类型,作为 Type
的实例。在这种情况下,这将 return arguments.Single()
的运行时类型,即 RuntimeType
,Type
的子 class。
基本上:
(Type)arguments.Single()
告诉编译器arguments
包含类型为Type
的单个元素。它的计算结果为Type
表示NewWord.OldWord.Class
的对象。arguments.Single().GetType()
获取argument.Single()
的 类型 。这与arguments.Single()
代表的类型 不 相同。它代表类型Class
,但它的类型是RuntimeType
。如果您仍然感到困惑,这里有一个整数示例。int[] array = new int[] { 10 };
array.Single()
代表 数字 10 但它的 类型 是System.Int32
.