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.)
fonte
2012-03-02 01:47:24
Una delle caratteristiche linguistiche veramente belle che Delphi ha che C# non ha. –