Pregunta

En C # ¿cuál es la diferencia entre:

public static class ClassName {}

Y:

public class ClassName {}
¿Fue útil?

Solución

Una clase estática no puede ser instanciada, y puede contener sólo los miembros estáticos. Por lo tanto, las llamadas para una clase estática son:. MyStaticClass.MyMethod(...) o MyStaticClass.MyConstant

Una clase no estática puede ser instanciada y puede contener miembros no estáticos (constructores de instancia, destructor, indizadores). Un miembro no estático de una clase no estática es exigible sólo a través de un objeto:

MyNonStaticClass x = new MyNonStaticClass(...);
x.MyNonStaticMethod(...);

Otros consejos

En primer lugar, un comentario en una respuesta preguntó acerca de lo que significa "estáticos". En C términos #, "estática" significa "relativa al tipo en sí, en lugar de una instancia del tipo". Se accede a un miembro estático (de otro tipo) con el nombre de tipo en lugar de una referencia o un valor. Por ejemplo:

// Static method, so called using type name
Guid someGuid = Guid.NewGuid();
// Instance method, called on a value
string asString = someGuid.ToString();

Ahora, clases estáticas ...

clases estáticos se utilizan generalmente como de "utilidad". El ejemplo clásico es probablemente System.Math . No tiene sentido crear una instancia de matemáticas - simplemente "es". Unas pocas reglas (tanto "puede" y "no puede"):

  • clases estáticas siempre se derivan de object. No se puede especificar un tipo de base diferente, o hacer que la clase estática implementar una interfaz.
  • clases estáticas no puede tener miembros de instancia -. Todas las variables, métodos, etc deben ser estáticas
  • clases estáticas no pueden declarar ningún constructor de instancia y el compilador no crear un constructor sin parámetros por defecto. (Antes de clases estáticas llegaron en C # 2.0, la gente a menudo se crearía una clase abstracta con un constructor privado, lo que impidió la instanciación. No es necesario aquí.)
  • clases estáticas son implícitamente abstracta (es decir, que están compilados a IL que describe una clase abstracta) pero no se puede añadir el modificador abstract mismo.
  • clases estáticas están sellados de forma implícita (es decir, que están compilados a IL que describe una clase cerrada) pero no se puede añadir el modificador sealed mismo.
  • clases estáticas pueden ser genéricos.
  • clases estáticas pueden pueden anidar, en las clases ya sea no estáticos o estáticas.
  • clases estáticas puede han anidado tipos, ya sea no estática o estática.
  • clases Sólo estático, de nivel superior no genérico pueden contener métodos de extensión (C # 3.0).

una clase estática también no pueden ser heredados de, mientras que una clase no estática con los miembros estáticos puede ser heredada de.

public static class ClassName {}

Una clase estática es igual que una variable global: se puede usar en cualquier parte del código sin crear instancias de ellos. Por ejemplo: NombreClase. Después de que el operador punto, se puede utilizar cualquier propiedad o función de la misma.

 public class ClassName {}

Sin embargo, si usted tiene la clase no estática, entonces usted necesita para crear una instancia de esta clase. Por ejemplo:

 ClassName classNameObject = new ClassName(); 

Todos los métodos / propiedades en una clase estática debe ser estática, mientras que una clase 'normal' puede contener una mezcla de instancia y métodos estáticos.

No se puede crear una instancia (crear objetos de) una clase estática. Y sólo puede contener miembros estáticos.

Ejemplo: System.Math

clase estática puede contener sólo los miembros estáticos.

miembro de estática puede ser utilizada sin instanciar una clase primero.

clases estáticas y miembros se utilizan para crear los datos y métodos que se puede acceder sin crear una instancia (usando la palabra clave new, no pueden tener un constructor) de la clase.

clases estáticas pueden ser declaradas cuando no hay dependencia de la identidad propia objeto, por lo que una clase estática debe contener sólo los miembros estáticos.

Estas clases son cargados por el CLR cuando se carga el programa o espacio de nombres que contiene la clase.

También están sellados, no puede ser heredado de.

http://www.javaworld.com /javaworld/javaqa/1999-08/01-qa-static2.html - muy buen artículo sobre esto. Esto es para Java. Pero creo que el concepto debería deberían misma en C # también.

Variable estática en la c

una variable local a una clase como variables auto pero variable estática no desaparecerá a medida que ya no funcionan los valores active.Their persist.If el control regresa, variables estáticas tienen el mismo valor es

función estática en c funciones que no son visibles a funciones en otros archivos.

* miembros de datos estáticos en cpp * miembros de datos pueden ser variables o funciones de la PPC estática se aplica tanto a los miembros de datos la clase en sí puede ser estática "Sólo hay una copia de los datos memberss estática compartida por todos los objetos de esa clase" miembros de datos estáticos sólo pueden acceder los miembros de datos estáticos

clase estática esta clase no puede crear instancias de objetos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top