更新:2007 年 11 月

用于获取类型的 System.Type 对象。typeof 表达式采用以下形式:

 复制代码
System.Type type = typeof(int);

备注

若要获取表达式的运行时类型,可以使用 .NET Framework 方法 GetType,如以下示例中所示:

 复制代码
int i = 0;
System.Type type = i.GetType();

不能重载 typeof 运算符。

typeof 运算符也能用于公开的泛型类型。具有不止一个类型参数的类型的规范中必须有适当数量的逗号。下面的示例演示如何确定方法的返回类型是否是泛型 IEnumerable<(Of <(T>)>)。假定此方法是 MethodInfo 类型的实例:

 复制代码
string s = method.ReturnType.GetInterface
    (typeof(System.Collections.Generic.IEnumerable<>).FullName

示例

C# 复制代码
public class SampleClass2
{
   public int sampleMember;
   public void SampleMethod() {}

   static void Main()
   {
      Type t = typeof(SampleClass);
      // Alternatively, you could use
      // SampleClass obj = new SampleClass();
      // 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:
    System.Type GetType()
    System.String ToString()
    Boolean Equals(System.Object)
    Int32 GetHashCode()
    Members:
    System.Type GetType()
    System.String ToString()
    Boolean Equals(System.Object)
    Int32 GetHashCode()
    Void .ctor()
    Void .ctor(Int32, System.String)
    System.String name
    Int32 id
*/

此示例使用 GetType 方法确定用来包含数值计算的结果的类型。这取决于结果数字的存储要求。

C# 复制代码
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# 语言规范中的以下各章节:

  • 7.5.11 typeof 运算符

请参见