📜  C#中的typeof运算符关键字(1)

📅  最后修改于: 2023-12-03 15:14:32.193000             🧑  作者: Mango

C#中的typeof运算符关键字

在C#中,typeof是一个关键字,可以用来获取一个类型的System.Type对象。它可以用于以下情况:

  • 获取类型的信息,如名称、父类、接口等。
  • 动态创建对象实例。
  • 在运行时检查类型。
使用typeof获取类型信息

我们可以使用typeof来获取一个类型的System.Type对象。例如,如果我们想要获取一个字符串类型的对象,可以这样做:

Type stringType = typeof(string);

这行代码将返回一个Type对象,它代表字符串类型。我们可以通过这个对象来获取字符串类型的名称、全名、父类、接口等信息:

Console.WriteLine("Type Name: {0}", stringType.Name);
Console.WriteLine("Full Type Name: {0}", stringType.FullName);
Console.WriteLine("Base Type Name: {0}", stringType.BaseType.Name);
Console.WriteLine("Implemented Interfaces: {0}", stringType.GetInterfaces());

输出结果:

Type Name: String
Full Type Name: System.String
Base Type Name: Object
Implemented Interfaces: System.ICloneable, System.Collections.Generic.IEnumerable`1[System.Char], System.IComparable, System.IEquatable`1[System.String]
使用typeof动态创建对象

我们可以使用typeof来在运行时动态创建一个对象实例。例如,如果我们想要在运行时创建一个字符串类型的对象,可以这样做:

Type stringType = typeof(string);
string stringObject = (string)Activator.CreateInstance(stringType);

这行代码将返回一个字符串类型的对象。我们可以通过这个对象来访问字符串的属性和方法:

stringObject = "Hello, World!";
Console.WriteLine(stringObject.Length);

输出结果:

13
使用typeof在运行时检查类型

我们可以使用typeof来在运行时检查一个对象的类型。例如,如果我们想要检查一个对象是否为字符串类型,可以这样做:

object obj = "Hello, World!";
if (obj.GetType() == typeof(string))
{
    Console.WriteLine("The object is a string.");
}

这行代码将输出"The object is a string.",表示这个对象是字符串类型。

与此类似,我们可以使用typeof来检查一个对象是否为特定的接口类型:

if (obj.GetType().GetInterfaces().Contains(typeof(IComparable)))
{
    Console.WriteLine("The object implements IComparable.");
}

这行代码将检查这个对象是否实现了IComparable接口,如果实现了则输出"The object implements IComparable."。

总之,typeof是一个很有用的关键字,可以用来获取类型信息、动态创建对象和在运行时检查类型,为C#的开发带来了更多的灵活性和便利性。