34

Type.GenericTypeArguments属性和方法有什么区别Type.GetGenericArguments()?他们总是返回相同的东西还是存在不同的情况?

4

2 回答 2

37

typeof(List<>)是他们不同的一个例子。该属性返回一个空数组,而该方法返回一个包含泛型的数组T。(这个T有)IsGenericParameter true

通过阅读文档,我认为您可以将其GenericTypeArguments视为GetGenericArguments().Where(t => !t.IsGenericParameter).ToArray(),即仅具体类型。另请参阅ContainsGenericParameters

于 2013-10-21T20:31:26.610 回答
4

参考资料告诉了确切的答案:

public virtual Type[] GenericTypeArguments{
    get{
        if(IsGenericType && !IsGenericTypeDefinition){
            return GetGenericArguments();
        }
        else{
            return Type.EmptyTypes;
    }
}

这个实现永远不会被其他东西覆盖。

于 2020-07-07T16:51:46.247 回答