私はこの宣言のためのC#と同等であるので、これはdelphiの "class of"(クラスの型)と同等のC#宣言ですか? Delphiで
type
TFooClass = class of TFoo;
TFoo=class
end;
のようにクラスの型を宣言することができますか?
私はこの宣言のためのC#と同等であるので、これはdelphiの "class of"(クラスの型)と同等のC#宣言ですか? Delphiで
type
TFooClass = class of TFoo;
TFoo=class
end;
のようにクラスの型を宣言することができますか?
C#で最も近いのは、タイプに関するメタデータを含むType
タイプです。
public class A { }
public static int Main(string[] args)
{
Type b = typeof(A);
}
それは正確同じではありません。 Delphiでは、 "othertypeの型"自体が変数に代入できる型です。 C#で "othertypeの型"はSystem.Type
の任意の変数に割り当てることができるSystem.Type
インスタンスです。一例として、
、Delphiで、あなたがこれを行うことができます:
type
TAClass = class of TA;
TA = class
public
class procedure DoSomething;
end;
var x : TAClass;
begin
x := TA;
x.DoSomething();
end;
あなたはC#で、このような何かを行うことはできません。 typeof(A)
を保持するType
のインスタンスからタイプAの静的メソッドを呼び出すことはできず、のみを保持する変数を定義することも、typeof(A)
または派生型を定義することもできません。
(デルファイメタクラス種類のために使用されるいくつかの特定のパターンは、ジェネリックを使用して達成することができる。この場合
public class A { }
public class ListOfA<T> where T: A { }
、Tは「A型」であるか、またはAの何らかの派生クラスをするために使用されましたクラスを作成してください。)
DelphiにはC#ではない本当に素晴らしい言語機能の1つがあります。 –