This article was translated by machine. To view in the article in English, select the English check box. You can also display the English text in a popup window by moving the mouse pointer over the text.
الترجمة
الأصلي
This documentation is archived and is not being maintained.

Type.IsGenericType الخاصية

Visual Studio 2010

الحصول على القيمة تشير إلى ما إذا كان اكتب الحالي هو نوع عام.

مساحة الاسم:  System
التجميع:  mscorlib (في mscorlib.dll)

public virtual bool IsGenericType { get; }

قيمة الخاصية

النوع: System.Boolean
true إذا الحالية بكتابة هو نوع عام; otherwهوe، false.

استخدام IsGenericTypeخاصية إلى لتحديد ما إذا كان Typeيمثل الكائن نوع عام. استخدام ContainsGenericParametersخاصية لتحديد ما إذا كان Typeيمثل الكائن على نوع constructed مفتوحة أو مغلق إنشاء النوع.

ملاحظةملاحظة

IsGenericType تقوم خاصية بإرجاع falseإذا كان نوع المباشرة هو غير عام. على سبيل المثال، صفيفة عناصرها من نوع A<int>(A(Of Integer)في Vهوual أساسى) هو نفسه غير نوع عام.

يلخص الجدول التالي الحالات الثابتة للمصطلحات عام المستخدمة في انعكاس العام.

المصطلح

invariant

تعريف نوع عام

TheIsGenericTypeDefinitionproperty هوtrue.

قم بتعريف نوع عام. نوع constructed هو التي تم إنشاؤها بواسطة استدعاء MakeGenericTypeالأسلوب تشغيل Typeالكائن الذي يمثل تعريف نوع عام وتحديد صفيفة من نوع الوسيطات.

MakeGenericType يمكن استدعاء فقط تشغيل ملفات تعريف نوع عام.

تعريف نوع عام أي هو نوع عام ( IsGenericTypeهو خاصية true)، ولكن في حديث هو غير صحيحة.

نوع عام

TheIsGenericTypeproperty هوtrue.

يمكن أن يكون تعريف نوع عام أو على نوع constructed مفتوحة نوعا constructed مغلقة.

لاحظ أن نوع صفيفة نوع العنصر الذي هو العام هو نفسها لا اكتب عام. نفس صحيحاً Typeكائن يمثل مؤشر لنوع عام.

فتح نوع constructed

TheContainsGenericParametersproperty هوtrue.

أمثلة نوعا عاماً unassigned له، معلمات نوع، نوعا التي هو متداخلة في تعريف نوع عام أو على نوع constructed مفتوحة، أو نوع عام يحتوي على وسيطة نوع الذي ContainsGenericParametersهو الخاصية true.

هو لا يمكن إنشاء مثيل لنوع constructed مفتوحة.

ملاحظة أنواع constructed غير مفتوح كل عام. صفيفة على سبيل المثال، اكتب العنصر الذي هو تعريف نوع عام هو غير عام، ومؤشر إلى نوع constructed مفتوحة هو غير عامة.

نوع constructed مغلق

TheContainsGenericParametersproperty هوfalse.

عند فحص بشكل متكرر، نوع على أية معلمات عامة غير معين.

معلمة نوع عام

TheIsGenericParameterproperty هوtrue.

TheContainsGenericParametersproperty هوtrue.

في تعريف نوع عام، عنصرا نائبا لنوع الذي سيتم تعيين لاحقاً.

وسيطة نوع عام

يمكن أن يكون أي نوع، بما في ذلك عام نوع معلمة.

نوع الوسائط المحددة صفيفة من Typeالكائنات التي تم تمريرها إلى MakeGenericTypeالطريقة عند إنشاء constructed نوع عام. إذا كانت مثيلات من النوع الناتج إلى يمكن إنشاء، في ContainsGenericParametersيجب أن تكون خاصية falseلكافة نوع الوسيطات.

يلي تعليمات برمجية المثال وجدول توضيح بعض هذه المصطلحات و invariants. Derivedفئة ذات أهمية خاصة لأن النوع الأساسي الخاص به هو نوع constructed يحتوي على خليط أنواع و معلمات نوع في به قائمة وسيطة النوع.


public class Base<T, U> {}

public class Derived<V> : Base<string, V>
{
    public G<Derived <V>> F;

    public class Nested {}
}

public class G<T> {}


يلي جدول أمثلة العروض واستخدامها وبناء تشغيل من فئات Base، Derived، و G. عند C + + و C# تعليمات برمجية هو نفسه، يتم عرض إدخال واحد فقط.

المثال

invariants

Derived(Of V)

Derived<V>

هذا نوع:

IsGenericType هوtrue.

IsGenericTypeDefinition هوtrue.

ContainsGenericParameters هوtrue.

Base(Of String, V)

Base<String,V>

Base<String^,V>

هذا نوع:

IsGenericType هوtrue.

IsGenericTypeDefinition هوfalse.

ContainsGenericParameters هوtrue.

Dim d() As Derived(Of Integer)

Derived<int>[] d;

array<Derived<int>^>^ d;

نوع المتغير d:

IsGenericType هوfalseولأنdهو an صفيفة.

IsGenericTypeDefinition هوfalse.

ContainsGenericParameters هوfalse.

T,U، وV(حيث تظهر)

IsGenericParameter هوtrue.

IsGenericType هوfalseلأنه لا مفر إلى تقييد معلمة نوع إلى أنواع عامة.

IsGenericTypeDefinition هوfalse.

ContainsGenericParameters هوtrueولأنT,U، وVنفسها عام معلمات نوع. وهذا لا يعني أى شىء عن نوع الوسيطات التي تمثل تعيين إلى عليها لاحقاً.

نوع حقل F

IsGenericType هوtrue.

IsGenericTypeDefinition هوfalseلأنه قد تم تعيين نوع إلى إلى نوع معلمة منG. ملاحظة هذا th هو هو يعادل الحاجة يسمى MakeGenericTypeالأسلوب.

ContainsGenericParameters هوtrueلأن نوع الحقل Fيحتوي على وسيطة نوع فتح constructed النوع. نوع constructed فتح لأن وسيطة النوع الخاص به (هو Base) هو تعريف نوع عام. وهذا يوضح الطبيعة العودية IsGenericTypeخاصية.

فئة متداخلة Nested

IsGenericType هوtrue، على الرغمNestedلدى فئة عامة لا معلمات نوع من نوعه، حيث تتداخل في نوع عام.

IsGenericTypeDefinition هوtrue. أي أنه يمكنك استدعاء MakeGenericTypeأسلوب و توفير معلمة نوع من النوع إرفاق، Derived.

ContainsGenericParameters هوtrueنظراً لإحاطة الكتابة،Derivedعلى معلمات نوع عام. وهذا يوضح الطبيعة العودية ContainsGenericParametersخاصية.

يلي تعليمات برمجية المثال يعرض القيمة IsGenericType، IsGenericTypeDefinition، IsGenericParameter، و ContainsGenericParametersخصائص أنواع الموصوفة في مقطع ملاحظات. لتوضيحات قيم الخصائص، راجع الجدول المرافق في ملاحظات.


using System;
using System.Reflection;

public class Base<T, U> {}

public class Derived<V> : Base<string, V>
{
    public G<Derived <V>> F;

    public class Nested {}
}

public class G<T> {}

class Example
{
    public static void Main()
    {
        // Get the generic type definition for Derived, and the base
        // type for Derived.
        //
        Type tDerived = typeof(Derived<>);
        Type tDerivedBase = tDerived.BaseType;

        // Declare an array of Derived<int>, and get its type.
        //
        Derived<int>[] d = new Derived<int>[0];
        Type tDerivedArray = d.GetType();

        // Get a generic type parameter, the type of a field, and a
        // type that is nested in Derived. Notice that in order to
        // get the nested type it is necessary to either (1) specify
        // the generic type definition Derived<>, as shown here,
        // or (2) specify a type parameter for Derived.
        //
        Type tT = typeof(Base<,>).GetGenericArguments()[0];
        Type tF = tDerived.GetField("F").FieldType;
        Type tNested = typeof(Derived<>.Nested);

        DisplayGenericType(tDerived, "Derived<V>");
        DisplayGenericType(tDerivedBase, "Base type of Derived<V>");
        DisplayGenericType(tDerivedArray, "Array of Derived<int>");
        DisplayGenericType(tT, "Type parameter T from Base<T>");
        DisplayGenericType(tF, "Field type, G<Derived<V>>");
        DisplayGenericType(tNested, "Nested type in Derived<V>");
    }

    public static void DisplayGenericType(Type t, string caption)
    {
        Console.WriteLine("\n{0}", caption);
        Console.WriteLine("    Type: {0}", t);

        Console.WriteLine("\t            IsGenericType: {0}", 
            t.IsGenericType);
        Console.WriteLine("\t  IsGenericTypeDefinition: {0}", 
            t.IsGenericTypeDefinition);
        Console.WriteLine("\tContainsGenericParameters: {0}", 
            t.ContainsGenericParameters);
        Console.WriteLine("\t       IsGenericParameter: {0}", 
            t.IsGenericParameter);
    }
}

/* This code example produces the following output:

Derived<V>
    Type: Derived`1[V]
                    IsGenericType: True
          IsGenericTypeDefinition: True
        ContainsGenericParameters: True
               IsGenericParameter: False

Base type of Derived<V>
    Type: Base`2[System.String,V]
                    IsGenericType: True
          IsGenericTypeDefinition: False
        ContainsGenericParameters: True
               IsGenericParameter: False

Array of Derived<int>
    Type: Derived`1[System.Int32][]
                    IsGenericType: False
          IsGenericTypeDefinition: False
        ContainsGenericParameters: False
               IsGenericParameter: False

Type parameter T from Base<T>
    Type: T
                    IsGenericType: False
          IsGenericTypeDefinition: False
        ContainsGenericParameters: True
               IsGenericParameter: True

Field type, G<Derived<V>>
    Type: G`1[Derived`1[V]]
                    IsGenericType: True
          IsGenericTypeDefinition: False
        ContainsGenericParameters: True
               IsGenericParameter: False

Nested type in Derived<V>
    Type: Derived`1+Nested[V]
                    IsGenericType: True
          IsGenericTypeDefinition: True
        ContainsGenericParameters: True
               IsGenericParameter: False
 */


نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, الإصدار x64 من نظام التشغيل Windows XP Professional, Windows XP Starter Edition, Windows Server 2008, نظام التشغيل Windows Server 2003, نظام التشغيل Windows Server 2000 المزود بحزمة الخدمة SP4, نظام التشغيل Windows Millennium Edition, نظام التشغيل Windows 98, Xbox 360, Zune

لا يدعم .NET Framework و .NET Compact Framework كافة الإصدارات الخاصة بكل نظام أساسي. للحصول على قائمة بالإصدارات المدعمة، راجع متطلبات النظام إطار عمل .NET.

.NET Framework

مدعوم في: 4, 3.5, 3.0, 2.0

NET Framework. Client Profile

مدعوم في: 4

XNA Framework

مدعوم في: 3.0, 2.0, 1.0
إظهار: