Type.GetType()和Type.GetElementType()之间的基本区别是什么

时间:2013-12-24 11:49:13

标签: c# system.reflection

我可以理解Type.GetType()的对象类型将被获得的场景,但是Type.GetElementType()是什么以及它做了什么?

任何人都可以明确地解释它吗?

3 个答案:

答案 0 :(得分:9)

Type.GetElementType用于数组,指针和by-ref参数类型。例如:

object value = new int[100];
Console.WriteLine(value.GetType()); // System.Int32[]
Console.WriteLine(value.GetType().GetElementType()); // System.Int32

或者:

public void Foo(ref int x) {}
...
var method = typeof(Test).GetMethod("Foo");
var parameter = method.GetParameters()[0];
Console.WriteLine(parameter.ParameterType); // System.Int32&
Console.WriteLine(parameter.ParameterType.GetElementType()); // System.Int32

至于你使用的时候 - 好吧,这取决于你开始使用反射的东西。

答案 1 :(得分:2)

GetElementType用于数组,而不是其他泛型类

详细信息Refer This link

答案 2 :(得分:2)

Type.GetElementType获取当前数组,指针或引用类型所包含或引用的对象的类型。例如:

using System;
class TestGetElementType 
{
    public static void Main() 
    {
        int[] array = {1,2,3};
        Type t = array.GetType();
        Type t2 = t.GetElementType();
        Console.WriteLine("The element type of {0} is {1}.",array, t2.ToString());
        TestGetElementType newMe = new TestGetElementType();
        t = newMe.GetType();
        t2 = t.GetElementType();
        Console.WriteLine("The element type of {0} is {1}.", newMe, t2==null? "null" : t2.ToString());
    }
}

输出:

The element type of System.Int32[] is System.Int32.
The element type of TestGetElementType is null.