6

我遇到了这段代码:

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

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

我的问题是,我怎样才能用这样的方法使用点GetType().Name

4

8 回答 8

9

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

你的代码可以这样写:

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

也许这样更容易理解。

编辑:方法调用就像GetType()执行该方法,并且您在该方法之后所做的一切都.适用于该方法的返回值,在这种情况下是一个类型的对象Type

于 2013-01-30T08:48:01.813 回答
5

GetType()是一个方法,它返回一个类的实例(在这种情况下,一个Type的实例.

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

于 2013-01-30T08:47:18.040 回答
4

因为GetType()返回一个对象的实例,所以您可以使用点来访问它返回的对象的属性或方法。

于 2013-01-30T08:47:39.847 回答
2

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

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

引用维基百科:

在软件工程中,流畅的接口(最初由 Eric Evans 和 Martin Fowler 创造)是面向对象 API 的实现,旨在提供更易读的代码。

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

于 2013-01-30T08:53:51.677 回答
2

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命名空间。

获取此成员的名称。

于 2013-01-30T08:54:34.063 回答
1

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

于 2013-01-30T08:51:37.263 回答
1

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

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

于 2013-01-30T08:52:33.887 回答
1

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

于 2013-01-30T09:25:25.543 回答