Variables globales

31/07/2003 - 10:24 por Fran | Informe spam
Hola comunidad. Me gustaría saber cual es la mejor forma
de utilizar/declarar variables globales en c#. Necesito
guardar el nombre de usuario y la contraseña y que éstas
se mantengan mientras corre mi aplicación. Gracias.

Preguntas similare

Leer las respuestas

#1 tristan
31/07/2003 - 11:32 | Informe spam
Lo más parecido en C# a las variables gloables, son los
atributos de clase (variables static).

public class TuClase
{
public static string Nombre = "nombre global";
}

Para acceder a ellas desde cualquier parte:

TuClase.Nombre


Aunque en realidad en OOP, no es recomendable trabajar
con variables globales. Lo ideal es que cada objeto
(instancia) tenga en si mismo la información que
necesita. Para ello basta ir pasando la información
necesaria entre instancias. O sea algo así:

public class TuClase
{
public string Nombre;
}

TuClase instancia = new TuClase();
instancia.Nombre = "nombre local";

Espero haberme explicado. La ventaja es una mayor
independencia entre las partes. Se puede cambiar una
clase sin afectar apenas a las demás. Trabajar con
variables globales, por el contrario, supone crear muchos
enlaces entre las distintas partes del programa.
Respuesta Responder a este mensaje
#2 Hernan Foffani
31/07/2003 - 12:09 | Informe spam
Hola comunidad. Me gustaría saber cual es la mejor forma
de utilizar/declarar variables globales en c#. Necesito
guardar el nombre de usuario y la contraseña y que éstas
se mantengan mientras corre mi aplicación. Gracias.



utiliza el patrón de diseño Singleton.
es una tecnica conocida, se puede implementar en cualquier
lenguaje orientado a objetos, puedes agregar seguridad
para subprocesos cuando lo requieras, es escalable.
aqui te agrego un ejemplo de como podrías implementarlo.

saludos,
-Hernan


using csUnit;

namespace Patterns {

public class Singleton {
private static Singleton instancia = null;
private string sUserName;

protected Singleton() { }

public static Singleton GetInstance() {
if (instancia != null) return instancia;
else return (instancia = new Singleton());
}

public string UserName {
get { return sUserName; }
set { sUserName = value; }
}
}

[TestFixture]
public class UnitTestClass {

[Test]
public void OneInstance() {
// constructor protegido. la siguiente
// instruccion falla al compilar.
// Singleton x = new Singleton();

Singleton t = Singleton.GetInstance();
Singleton s = Singleton.GetInstance();

Assert.Equals(s, t);
}

[Test]
public void InstanceProperty() {
string name = "juan";

Singleton t = Singleton.GetInstance();
t.UserName = name;

Singleton q = Singleton.GetInstance();
Assert.Equals(q.UserName, name);
}
}
}
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida