私はこのコードに出くわしました:
int myInt = 0;
textBox1.Text = myInt.GetType().Name;
.NET のドキュメントによると、GetType() はクラスではなくメソッドです。
私の質問は、このようにメソッドでドットを使用するにはどうすればよいGetType().Name
ですか?
私はこのコードに出くわしました:
int myInt = 0;
textBox1.Text = myInt.GetType().Name;
.NET のドキュメントによると、GetType() はクラスではなくメソッドです。
私の質問は、このようにメソッドでドットを使用するにはどうすればよいGetType().Name
ですか?
メソッドはクラス インスタンスを返すことができます。ここでは、クラスのインスタンスですType
。このオブジェクトでは、プロパティやその他のメソッドなどにアクセスできます。
コードは次のように記述できます。
int myInt = 0;
Type t = myInt.GetType();
textBox1.Text = t.Name;
その方が分かりやすいかも。
編集: のようなメソッド呼び出しGetType()
はメソッドを実行し、その後に行うすべてのことは.
メソッドの戻り値に適用されます。この場合は type のオブジェクトですType
。
GetType()
クラスのインスタンスを返すメソッドです(この場合、Type
クラスのインスタンス.
その返されたインスタンスのメンバーはType
、ドット構文を介してアクセスされます。
はオブジェクトのインスタンスを返すためGetType()
、ドットを使用して、返されるオブジェクトのプロパティまたはメソッドにアクセスできます。
この用語は、一般にチェーン (C# および JavaScript では確かに) または流暢なインターフェイスとして知られています。
したがって、他の2つの回答が示唆しているように、インスタンスを返し、そのクラスの一部であるメソッドを実行しています。
ウィキペディアを引用するには:
ソフトウェア エンジニアリングでは、流暢なインターフェイス (Eric Evans と Martin Fowler によって最初に造られた) は、より読みやすいコードを提供することを目的としたオブジェクト指向 API の実装です。
通常、流暢なインターフェイスは、メソッド チェーンを使用して命令を中継することによって実装されます > 後続の呼び出しのコンテキスト (ただし、流暢なインターフェイスには、メソッド チェーン以上のものが必要です)。通常、コンテキストは、呼び出されたメソッドの自己参照の戻り値によって定義されます。新しいコンテキストは、無効なコンテキストの戻りによって終了した最後のコンテキストと同等です。
から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
名前空間が含まれます。
このメンバーの名前を取得します。
GetType() 指定された型を表す Type オブジェクトを取得します。Type は、クラス型、インターフェイス型、配列型、値型、列挙型、型パラメーター、ジェネリック型定義を表します。タイプでは、メソッドまたはプロパティにアクセスできます。
GetType() はオブジェクトを返すため、C# 言語では、返されるオブジェクトの任意のメンバーを呼び出すことができるため、コードは非常に有効な例です。
編集: Jobo の回答を確認して、コードをよりわかりやすい形式で記述する方法をよりよく理解してください
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