GetType() 是一个方法还是一个类

本文关键字:一个 方法 GetType | 更新日期: 2023-09-27 17:56:32

我遇到了这段代码:

int myInt = 0;
textBox1.Text = myInt.GetType().Name;

根据 .NET 文档,GetType() 是一个方法,而不是一个类。

我的问题是,我如何才能将点与方法一起使用,例如GetType().Name

GetType() 是一个方法还是一个类

方法可以返回一个类实例,这里是类Type的实例。在此对象上,您可以访问属性、其他方法等。

您的代码可以编写如下:

int myInt = 0;
Type t = myInt.GetType();
textBox1.Text = t.Name;

也许这样更容易理解。

编辑:像 GetType() 这样的方法调用会执行该方法,您在.之后执行的所有操作都将应用于该方法的返回值,在本例中为 Type 类型的对象。

>GetType()是一个返回类实例(在本例中为Type类的实例)的方法。

返回的Type实例的成员通过点语法进行访问。

> 由于 GetType() 返回对象的实例,因此可以使用点来访问它返回的对象的属性或方法。

该术语通常被称为链接(当然在 C# 和 JavaScript 中)或流畅接口。

因此,正如其他两个答案所建议的那样,您返回一个实例并执行属于该类的方法。

引用维基百科:

在软件工程中,一个流畅的界面(由Eric Evans和 Martin Fowler)是一个面向对象的API的实现,旨在提供 更具可读性的代码。

流畅接口通常通过使用方法链来中继后续调用的指令>上下文来实现(但流畅的接口需要的不仅仅是方法 链接)。通常,上下文是 通过被调用方法的返回值定义 自引用,其中新上下文等效于最后一个上下文 通过返回 void 上下文终止。

from MSDN ;

Return Value
Type: System.Type
The exact runtime type of the current instance.

所以基本上,它返回一个类实例。这就是为什么您也可以访问其属性的原因。让我们看一下这个例子;

int i = 0;
Console.WriteLine(i.GetType()); // Gets the System.Type of the current instance.
Console.WriteLine(i.GetType().Name); // Gets the name of the current member.

输出将是

System.Int32
Int32

这是一个DEMO.

在这种情况下,Name属性是MemberInfo.Name属性。它包括System.Reflection命名空间。

获取此成员的名称。

Object.GetType()返回current instance的确切运行时类型。


例:

using System;
public class MyBaseClass {
}
public class MyDerivedClass: MyBaseClass {
}
public class Test 
{
   public static void Main() 
   {
      MyBaseClass myBase = new MyBaseClass();
      MyDerivedClass myDerived = new MyDerivedClass();
      object o = myDerived;
      MyBaseClass b = myDerived;
      Console.WriteLine("mybase: Type is {0}", myBase.GetType());
      Console.WriteLine("myDerived: Type is {0}", myDerived.GetType());
      Console.WriteLine("object o = myDerived: Type is {0}", o.GetType());
      Console.WriteLine("MyBaseClass b = myDerived: Type is {0}", b.GetType());
   }
}
// The example displays the following output: 
//    mybase: Type is MyBaseClass 
//    myDerived: Type is MyDerivedClass 
//    object o = myDerived: Type is MyDerivedClass 
//    MyBaseClass b = myDerived: Type is MyDerivedClass 

参考 : MSDN

因为 GetType() 返回一个对象,C# 语言允许你调用要返回的对象的任何成员,所以你的代码是一个非常有效的示例。

编辑:检查Jobo的答案,以更好地了解如何以更易于理解的形式编写代码

GetType() 获取一个表示指定类型的 Type 对象。Type 表示类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义。在类型上,您可以访问方法或属性。