utilizadas significado significa reservadas que palabras lenguaje instrucciones identificadores comandos codigos claves c# static

significado - palabras reservadas utilizadas en c#



Palabra clave estática en c# (4)

Estoy realmente confundido con el significado real de la palabra clave estática en C #. He revisado diferentes artículos en Internet, pero ninguno de ellos realmente me está ayudando a entender su significado y otras fuentes no son confiables. Sé que Stack Overflow tiene algunas mentes brillantes que pueden ayudarme a entender el significado real de estática como

  • Cuando se inicializan.
  • Métodos estáticos, propiedades, clases y constructores.
  • Static vs readonly vs constant

De la documentación:

Los inicializadores de variable de campo estático de una clase corresponden a una secuencia de asignaciones que se ejecutan en el orden textual en que aparecen en la declaración de clase.

Los miembros estáticos se inicializan en el primer acceso a la clase y se ejecutan en orden textual.

Métodos Static , las propiedades son parte de la clase y no de la instancia.

Static no tiene nada que ver con readonly o constant . Static es una forma como un miembro accedido , readonly y constant es como un miembro almacenado / administrado .


En resumen, estática significa efectivamente "asociado con un tipo en lugar de cualquier instancia del tipo". Entonces, hay un conjunto de variables estáticas para un tipo (dentro de un dominio de aplicación) si tiene 0 instancias o un millón; no necesita una instancia para acceder a un miembro estático, etc.

El punto exacto de inicialización de las variables estáticas depende de si también hay un constructor estático o no, pero en términos generales es "una vez, generalmente antes de que ocurra algo significativo en la clase". (Vea esta publicación del blog para una descripción más detallada.)

Si bien los campos de readonly pueden ser estáticos o de instancia (es decir, relacionados con el tipo o relacionados con una instancia del tipo), los valores const son siempre estáticamente implícitos (son constantes en tiempo de compilación, por lo que no tendría sentido tener uno) copia por instancia).

A veces puede ver que la static se describe como "compartida entre todas las instancias de un tipo"; a mí personalmente me disgusta esa descripción, ya que sugiere que tiene que haber al menos una instancia ... mientras que en realidad, no necesita ninguna instancia en Para utilizar un miembro estático. Prefiero pensar en ellos como completamente separados, en lugar de ser "compartidos" entre instancias.



Un poco sobre constante (const) y readonly:

  • constant o const es una variable que no se puede modificar, y qué valor se conoce en el momento de la compilación.
  • readonly es muy similar a la constante, esto tampoco se puede modificar, la diferencia es que un campo readonly se puede modificar / inicializar una vez en el constructor. Después de eso, leer solo es lo mismo que constante.

Usando ejemplos:

constant: const int a=10; // value cannot be modified, value is known at compile time

Pero, ¿qué hacer cuando queremos un campo constante cuyo valor no se conoce en el momento de la compilación?

e.g const PersonClass a=new PersonClass("name"); // error

La respuesta es un campo de solo lectura:

readonly: readonly PersonClass a=new PersonClass("name"); // all correct