Sí, Foo.class
en Java es equivalente a typeof(Foo)
en C#. Consulte section 15.8.2 of the JLS para obtener más información sobre los literales de clase .
Es no lo mismo que llamar GetType()
en una referencia, que obtiene el tiempo de ejecución tipo de un objeto. El equivalente de Java es someReference.getClass()
.
Una razón por la que puede verlo más a menudo en el código de Java que en C# es en relación con los genéricos. No es del todo inusual tener algo como:
public class Generic<T>
{
private final Class<T> clazz;
public Generic(Class<T> clazz)
{
this.clazz = clazz;
}
}
Esto permite el acceso en tiempo de ejecución a la clase de reflexión, etc. Esto sólo es necesario en Java debido a borrado tipo, mediante el cual un objeto de un tipo genérico puede Normalmente, determina sus argumentos de tipo en el momento de la ejecución.
Alguna información relacionada: 'System.Type' es un tipo general en .Net, y no específico para C#. No sé si lo mismo es o no es cierto para el tipo 'Clase 'en la JVM (a diferencia del lenguaje Java en sí). –
Es bastante difícil encontrar esta información proveniente de Java. Busqué "objeto de clase C#", "referencia de C# a clase" y muchos otros términos sin saber que esto se llama "Tipo" en C# - lo único que obtendrá son tutoriales e introducciones a OOP. Pero gracias por esa pregunta :-) – Mitja