Поделиться через


typeof (справочник по C#)

Используется для получения объекта System.Type для типа. Выражение typeof принимает следующую форму:

System.Type type = typeof(int);

Заметки

Для получения типа выражения во время выполнения можно воспользоваться методом платформы .NET GetType, как показано в следующем примере:

int i = 0;
System.Type type = i.GetType();

Оператор typeof перегрузить нельзя.

Оператор typeof может также использоваться с открытыми универсальными типами. Типы с более чем одним параметром типа должны иметь соответствующее количество запятых в спецификации. В следующем примере показано, как определить, является ли тип возвращаемого значения универсальным IEnumerable. Предполагается, что метод является экземпляром типа MethodInfo:

string s = method.ReturnType.GetInterface
    (typeof(System.Collections.Generic.IEnumerable<>).FullName);

Пример

public class ExampleClass
{
   public int sampleMember;
   public void SampleMethod() {}

   static void Main()
   {
      Type t = typeof(ExampleClass);
      // Alternatively, you could use 
      // ExampleClass obj = new ExampleClass(); 
      // Type t = obj.GetType();

      Console.WriteLine("Methods:");
      System.Reflection.MethodInfo[] methodInfo = t.GetMethods();

      foreach (System.Reflection.MethodInfo mInfo in methodInfo)
         Console.WriteLine(mInfo.ToString());

      Console.WriteLine("Members:");
      System.Reflection.MemberInfo[] memberInfo = t.GetMembers();

      foreach (System.Reflection.MemberInfo mInfo in memberInfo)
         Console.WriteLine(mInfo.ToString());
   }
}
/*
 Output:
    Methods:
    Void SampleMethod()
    System.String ToString()
    Boolean Equals(System.Object)
    Int32 GetHashCode()
    System.Type GetType()
    Members:
    Void SampleMethod()
    System.String ToString()
    Boolean Equals(System.Object)
    Int32 GetHashCode()
    System.Type GetType()
    Void .ctor()
    Int32 sampleMember
*/

В этом примере для определения типа, используемого для размещения результата численного вычисления, применен метод GetType. Тип зависит от требований, предъявляемых для хранения получаемого в результате числа.

class GetTypeTest
{
    static void Main()
    {
        int radius = 3;
        Console.WriteLine("Area = {0}", radius * radius * Math.PI);
        Console.WriteLine("The type is {0}",
                          (radius * radius * Math.PI).GetType()
        );
    }
}
/*
Output:
Area = 28.2743338823081
The type is System.Double
*/

Спецификация языка C#

Дополнительные сведения см. в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

См. также

Ссылки

Ключевые слова C#

is (Справочник по C#)

Ключевые слова операторов (Справочник по C#)

Type

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Справочник по C#