2012-03-02 5 views

答えて

14

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の何らかの派生クラスをするために使用されましたクラスを作成してください。)

+10

DelphiにはC#ではない本当に素晴らしい言語機能の1つがあります。 –

関連する問題