2012-03-02 10 views

Respuesta

14

Lo más cercano que puede obtener en C# es el tipo Type, que contiene los metadatos sobre un tipo.

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

No es exactamente la misma. En Delphi, "type of othertype" es en sí mismo un tipo que puede asignar a una variable. En C# "type of othertype" es una instancia System.Type que se puede asignar a cualquier variable del tipo System.Type.

A modo de ejemplo, en Delphi, usted puede hacer esto:

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

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

No se puede hacer nada como esto en C#; no puede llamar a métodos estáticos de tipo A desde instancias de Type que suceden para contener typeof(A), ni puede definir una variable que puede solo mantener typeof(A) o tipos derivados.

(Algunos patrones específicos que los tipos de Delphi metaclase se utilizan, pueden llevarse a cabo utilizando los genéricos:

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

En este caso, T es el "tipo de A" o lo que sea clase derivada de A se utilizó para construir la clase.)

+10

Una de las características de lenguaje realmente agradables que Delphi tiene que C# no. –

Cuestiones relacionadas