Type.IsGenericParameter 屬性

定義

取得值,指出目前的 Type 是否表示泛型類型或泛型方法定義中的類型參數。

public:
 abstract property bool IsGenericParameter { bool get(); };
public:
 virtual property bool IsGenericParameter { bool get(); };
public abstract bool IsGenericParameter { get; }
public virtual bool IsGenericParameter { get; }
member this.IsGenericParameter : bool
Public MustOverride ReadOnly Property IsGenericParameter As Boolean
Public Overridable ReadOnly Property IsGenericParameter As Boolean

屬性值

Boolean

如果 Type 物件表示泛型型別或泛型方法定義中的型別參數,則為 true,否則為 false

範例

下列範例會使用 IsGenericParameter 屬性來測試泛型型別中的泛型型別參數。

if ( t->IsGenericType )
{
   
   // If this is a generic type, display the type arguments.
   //
   array<Type^>^typeArguments = t->GetGenericArguments();
   Console::WriteLine( L"\tList type arguments ({0}):",
      typeArguments->Length );
   System::Collections::IEnumerator^ myEnum =
      typeArguments->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Type^ tParam = safe_cast<Type^>(myEnum->Current);
      
      // If this is a type parameter, display its
      // position.
      //
      if ( tParam->IsGenericParameter )
      {
         Console::WriteLine(
            L"\t\t{0}\t(unassigned - parameter position {1})",
            tParam, tParam->GenericParameterPosition );
      }
      else
      {
         Console::WriteLine( L"\t\t{0}", tParam );
      }
   }
}
if (t.IsGenericType)
{
    // If this is a generic type, display the type arguments.
    //
    Type[] typeArguments = t.GetGenericArguments();

    Console.WriteLine("\tList type arguments ({0}):", 
        typeArguments.Length);

    foreach (Type tParam in typeArguments)
    {
        // If this is a type parameter, display its
        // position.
        //
        if (tParam.IsGenericParameter)
        {
            Console.WriteLine("\t\t{0}\t(unassigned - parameter position {1})",
                tParam,
                tParam.GenericParameterPosition);
        }
        else
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}
If t.IsGenericType Then
    ' If this is a generic type, display the type arguments.
    '
    Dim typeArguments As Type() = t.GetGenericArguments()
    
    Console.WriteLine(vbTab & "List type arguments (" _
        & typeArguments.Length & "):")
    
    For Each tParam As Type In typeArguments
        ' If this is a type parameter, display its position.
        '
        If tParam.IsGenericParameter Then
            Console.WriteLine(vbTab & vbTab & tParam.ToString() _
                & vbTab & "(unassigned - parameter position " _
                & tParam.GenericParameterPosition & ")")
        Else
            Console.WriteLine(vbTab & vbTab & tParam.ToString())
        End If
    Next tParam
End If

備註

Type 代表泛型型別參數的物件可以藉由呼叫 GetGenericArguments Type 代表泛型型別定義之物件的方法,或 GetGenericArguments MethodInfo 代表泛型方法定義之物件的方法來取得。

  • 若為泛型型別或方法定義, IsGenericParameter 屬性會 true 針對所產生陣列的每個元素傳回。

  • 針對封閉的結構化類型或方法,此 IsGenericParameter 屬性會 false 針對方法所傳回之陣列的每個元素傳回 GetGenericArguments

  • 針對開放式的結構化類型或方法,陣列的某些專案可能是特定的類型,而其他專案則可能是型別參數。 IsGenericParameter 傳回 false 類型和 true 類型參數的。 屬性的程式碼範例會 ContainsGenericParameters 示範混合類型和型別參數的泛型類別。

如需泛型反映中所使用之規範的恆成立條件清單,請參閱 IsGenericType 屬性備註。

適用於

另請參閱