2012-03-02 6 views

risposta

14

Il più vicino che è possibile ottenere in C# è il tipo Type, che contiene i metadati relativi a un tipo.

public class A { } 
public static int Main(string[] args) 
{ 
    Type b = typeof(A); 
} 

Non è esattamente lo stesso. In Delphi, "type of othertype" è di per sé un tipo che è possibile assegnare a una variabile. In C# "tipo di altro tipo" è un'istanza System.Type che può essere assegnata a qualsiasi variabile di tipo System.Type.

A titolo di esempio, in Delphi, si può fare questo:

type 
    TAClass = class of TA; 
    TA = class 
    public 
    class procedure DoSomething; 
    end; 

var x : TAClass; 
begin 
    x := TA; 
    x.DoSomething(); 
end; 

Non si può fare niente di simile in C#; non è possibile chiamare i metodi statici di tipo A da istanze di Type che si verificano per contenere typeof(A), né è possibile definire una variabile che può solo attesa typeof(A) o tipi derivati.

(Alcuni modelli specifici che i tipi di Delphi metaclasse vengono utilizzati per, può essere realizzato utilizzando farmaci generici:

public class A { } 
public class ListOfA<T> where T: A { } 

In questo caso, T è il "tipo di A" o qualunque classe derivata di A è stato utilizzato per costruisci la classe.)

+10

Una delle caratteristiche linguistiche veramente belle che Delphi ha che C# non ha. –

Problemi correlati