estatica - use static class in c#
¿Qué es una clase "estática"? (10)
En C #, ¿cuál es la diferencia entre:
public static class ClassName {}
Y:
public class ClassName {}
En primer lugar, un comentario sobre una respuesta que se pregunta sobre qué significa "estático". En términos de C #, "estático" significa "relacionado con el tipo en sí mismo, en lugar de una instancia del tipo". Usted accede a un miembro estático (de otro tipo) utilizando el nombre del 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 ...
Las clases estáticas generalmente se usan como clases de "utilidad". El ejemplo canónico es probablemente System.Math
. No tiene sentido crear una instancia de matemática, simplemente "es". Algunas reglas (tanto "puede" como "no puedo"):
- Las clases estáticas siempre derivan del
object
. No puede especificar un tipo de base diferente ni hacer que la clase estática implemente una interfaz. - Las clases estáticas no pueden tener ningún miembro de instancia; todas las variables, métodos, etc. deben ser estáticos.
- Las clases estáticas no pueden declarar ningún constructor de instancia y el compilador no crea un constructor sin parámetros de forma predeterminada. (Antes de que las clases estáticas aparecieran en C # 2.0, las personas solían crear una clase abstracta con un constructor privado, lo que impedía la creación de instancias. No es necesario aquí).
- Las clases estáticas son implícitamente abstractas (es decir, están compiladas en IL, que describe una clase abstracta), pero usted no puede agregar el modificador
abstract
usted mismo. - Las clases estáticas están implícitamente selladas (es decir, están compiladas en IL, que describe una clase sellada), pero usted no puede agregar el modificador
sealed
usted mismo. - Las clases estáticas pueden ser genéricas.
- Las clases estáticas pueden estar anidadas, en clases no estáticas o estáticas.
- Las clases estáticas pueden tener tipos anidados, ya sea no estáticos o estáticos.
- Solo las clases no genéricas, estáticas y de alto nivel pueden contener métodos de extensión (C # 3.0).
La clase estática solo puede contener miembros estáticos.
El miembro estático se puede usar sin instanciar primero una clase.
Las clases y miembros estáticos se utilizan para crear datos y métodos a los que se puede acceder sin crear una instancia (utilizando la new
palabra clave, no pueden tener un constructor) de la clase.
Las clases estáticas se pueden declarar cuando no hay dependencia de su propia identidad de objeto, por lo que una clase estática debe contener solo miembros estáticos.
El CLR carga estas clases cuando se carga el programa o el espacio de nombres que contiene la clase.
También están sellados, no pueden ser heredados de.
No puede instanciar (crear objetos de) una clase estática. Y solo puede contener miembros estáticos.
Ejemplo: System.Math
No se puede crear una instancia de una clase estática y solo puede contener miembros estáticos. Por lo tanto, las llamadas para una clase estática son como: MyStaticClass.MyMethod(...)
o MyStaticClass.MyConstant
.
Se puede crear una instancia de una clase no estática y puede contener miembros no estáticos (constructores de instancias, destructor, indexadores). Un miembro no estático de una clase no estática solo se puede llamar a través de un objeto:
MyNonStaticClass x = new MyNonStaticClass(...);
x.MyNonStaticMethod(...);
Todos los métodos / propiedades en una clase estática deben ser estáticos, mientras que una clase "normal" puede contener una combinación de métodos estáticos y de instancia.
Una clase estática tampoco se puede heredar, mientras que una clase no estática con miembros estáticos se puede heredar.
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 ser igual en C # también.
Variable estática en c
una variable local a una clase como variables automáticas, pero la variable estática no desaparece porque la función ya no está activa. Sus valores persisten. Si el control vuelve, las variables estáticas tienen el mismo valor.
función estática en funciones c que no son visibles para funciones en otros archivos.
* los miembros de datos estáticos en cpp * los miembros de datos pueden ser variables o funciones en cpp static aplica a ambos miembros de datos la clase puede ser estática "Solo hay una copia de miembros de datos estáticos compartidos por todos los objetos en esa clase" los miembros de datos estáticos pueden acceder solo a los miembros de datos estáticos
clase estática esta clase no puede instanciar objetos
public static class ClassName {}
Una clase estática es como una variable global: puedes usarla en cualquier parte de tu código sin crear una instancia de ellas. Por ejemplo: ClassName. Después del operador de punto, puede usar cualquier propiedad o función del mismo.
public class ClassName {}
Pero si tienes una clase no estática, entonces necesitas crear una instancia de esta clase. Por ejemplo:
ClassName classNameObject = new ClassName();