¿Qué significa cuando agrega la palabra clave estática a un método?
public static void doSomething(){
//Well, do something!
}
¿Puedes agregar la static
palabra clave a la clase? ¿Qué significaría entonces?
¿Qué significa cuando agrega la palabra clave estática a un método?
public static void doSomething(){
//Well, do something!
}
¿Puedes agregar la static
palabra clave a la clase? ¿Qué significaría entonces?
Respuestas:
Una static
función, a diferencia de una función regular ( instancia ), no está asociada con una instancia de la clase.
Una static
clase es una clase que solo puede contener static
miembros y, por lo tanto, no se puede crear una instancia.
Por ejemplo:
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
Para llamar InstanceMethod
, necesita una instancia de la clase:
SomeClass instance = new SomeClass();
instance.InstanceMethod(); //Fine
instance.StaticMethod(); //Won't compile
SomeClass.InstanceMethod(); //Won't compile
SomeClass.StaticMethod(); //Fine
Desde otro punto de vista: considere que desea realizar algunos cambios en una sola cadena. por ejemplo, desea que las letras sean mayúsculas, etc. crea otra clase llamada "Herramientas" para estas acciones. no tiene sentido hacer una instancia de la clase "Herramientas" porque no hay ningún tipo de entidad disponible dentro de esa clase (compárese con la clase "Persona" o "Profesor"). Entonces usamos palabras clave estáticas para usar la clase "Herramientas" sin hacer ninguna instancia de eso, y cuando presiona punto después del nombre de la clase ("Herramientas") puede tener acceso a los métodos que desee.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Tools.ToUpperCase("Behnoud Sherafati"));
Console.ReadKey();
}
}
public static class Tools
{
public static string ToUpperCase(string str)
{
return str.ToUpper();
}
}
}
Un método, campo, propiedad o evento estático se puede invocar en una clase incluso cuando no se ha creado ninguna instancia de la clase. Si se crean instancias de la clase, no se pueden usar para acceder al miembro estático. Solo existe una copia de los campos y eventos estáticos, y los métodos y propiedades estáticos solo pueden acceder a los campos y eventos estáticos. Los miembros estáticos a menudo se usan para representar datos o cálculos que no cambian en respuesta al estado del objeto; por ejemplo, una biblioteca matemática puede contener métodos estáticos para calcular seno y coseno. Los miembros de clase estática se declaran utilizando la palabra clave estática antes del tipo de retorno del membe
En breve no puede crear una instancia de la clase estática: Ej:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
No puedes hacer así:
myStaticClass msc = new myStaticClass(); // it will cause an error
Solo puedes hacer:
myStaticClass.someFunction();
La palabra clave estática, cuando se aplica a una clase, le dice al compilador que cree una sola instancia de esa clase. Entonces no es posible 'nuevo' una o más instancias de la clase. Todos los métodos en una clase estática deben ser declarados estáticos.
Es posible, y a menudo deseable, tener métodos estáticos de una clase no estática. Por ejemplo, un método de fábrica cuando crea una instancia de otra clase a menudo se declara estático, ya que esto significa que no se requiere una instancia particular de la clase que contiene el método del factor.
Para una buena explicación de cómo, cuándo y dónde ver MSDN
static
clase no tiene ninguna instancia en absoluto.