📅  最后修改于: 2023-12-03 15:14:32.193000             🧑  作者: Mango
在C#中,typeof是一个关键字,可以用来获取一个类型的System.Type对象。它可以用于以下情况:
我们可以使用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来在运行时动态创建一个对象实例。例如,如果我们想要在运行时创建一个字符串类型的对象,可以这样做:
Type stringType = typeof(string);
string stringObject = (string)Activator.CreateInstance(stringType);
这行代码将返回一个字符串类型的对象。我们可以通过这个对象来访问字符串的属性和方法:
stringObject = "Hello, World!";
Console.WriteLine(stringObject.Length);
输出结果:
13
我们可以使用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#的开发带来了更多的灵活性和便利性。