我遇到了这段代码:
int myInt = 0;
textBox1.Text = myInt.GetType().Name;
根据.NET documentation,GetType()是一个方法,而不是一个类。
我的问题是,如何使用方法来使用点,例如GetType().Name
?
答案 0 :(得分:9)
方法可以返回类实例,这里是类Type
的实例。在此对象上,您可以访问属性,其他方法等。
您的代码可以写成:
int myInt = 0;
Type t = myInt.GetType();
textBox1.Text = t.Name;
这样可能更容易理解。
编辑:
类似GetType()
的方法调用会执行该方法,而.
之后执行的所有操作都会应用于方法的返回值,在本例中为Type
类型的对象。
答案 1 :(得分:5)
GetType()
是返回类的实例的方法(在本例中是Type
class的实例。
通过点语法访问返回的Type
实例的成员。
答案 2 :(得分:4)
因为GetType()
返回对象的实例,所以可以使用点来访问它返回的对象的属性或方法。
答案 3 :(得分:2)
这个术语通常被称为链接(当然在C#和JavaScript中)或流畅的界面。
因此,在建议的其他两个答案中,您将返回一个实例并执行属于该类的方法。
引用维基百科:
在软件工程中,一个流畅的界面(由Eric Evans和 Martin Fowler)是面向对象API的实现,旨在提供 更易读的代码。
通常通过使用方法链来中继指令来实现流畅的接口>后续调用的上下文(但流畅的界面不仅仅需要方法 链接)。通常,上下文是 通过被调用方法的返回值定义 自我引用,其中新上下文等同于最后一个上下文 通过返回无效的上下文终止。
答案 4 :(得分: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
命名空间。
获取此成员的名称。
答案 5 :(得分: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
答案 6 :(得分:1)
因为GetType()返回一个对象,所以C#语言允许你调用被返回对象的任何成员,所以你的代码是一个非常有效的例子。
编辑:检查Jobo的答案,以便更好地了解如何以更易于理解的形式编写代码
答案 7 :(得分:1)
GetType()获取表示指定类型的Type对象。 Type表示类类型,接口类型,数组类型,值类型,枚举类型,类型参数,泛型类型定义。在类型上,您可以访问方法或属性。