Existen los modulos en en C#

17/01/2007 - 04:48 por RobWare.Ruiz | Informe spam
Soy nuevo en C# vengo de la tradicion de Visual Basic 6.0 y quisiera que me
aterrizaran unos concepto, existen los modulos en C# como los que existen en
Visual Basic?, como se pueden declarar variables globales al proyecto?, yo
normalmente cuando trabajo en proyectos de base de datos, creo una conexion
con un objeto global que referencio durante todo el proyecto y simplemente
abro la conexion cuendo la requiero y la cierro cuando no la necesito mas, se
puede implementar lo mismo en C#, y en caso de que no como se podría hacer?

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
17/01/2007 - 08:26 | Informe spam
"RobWare.Ruiz" wrote in message
news:
Mostrar la cita
Simplemente declara tus objetos globales como "public static" dentro de
una clase. Después úsalos en cualquier parte del proyecto poniendo
NombreDeLaClase.NombreDelObjeto.
#2 Alberto Poblacion
17/01/2007 - 16:26 | Informe spam
"RobWare.Ruiz" wrote in message
news:
Mostrar la cita
No, ahi está la gracia de ponerle la palabra "static" a la declaración.
Las variables declaradas como static son accesibles desde el momento en que
se inicia el programa, sin necesidad de instanciar la clase que las
contiene. Obviamente, solo puede haber una copia en memoria de cada variable
static, a diferencia de las de instancia, que tienen una copia por cada
instancia que se cree de la clase contenedora.
Otra diferencia entre las variables estáticas y las de instancia es que
las estáticas se invocan con el nombre de la clase, mientras que las de
instancia se invocan a través de un objeto instanciado.

Ejemplo:

public class VariablesGlobales
{
public static int Numero;
public static StringBuilder SB;
}

En cualquier sitio del programa:

VariablesGlobales.Numero=7; //Observa que no hace falta instanciar la
clase VariablesGlobales

VariablesGlobales.SB = new StringBuilder();
SB.Append("Hola");
//Observa que para acceder a la variable SB no ha sido necesario
instanciar la clase contenedora VariablesGlobales, pero que para hacer algo
con el propio SB, que a su vez es un objeto, sí que hace falta instancar SB.
#3 Alfredo Novoa
17/01/2007 - 21:17 | Informe spam
On Wed, 17 Jan 2007 11:36:00 -0800, RobWare.Ruiz
wrote:

Mostrar la cita
Yo también estoy bastante descontento con los lenguajes de
programación en general.

Mostrar la cita
Tienes toda la razón. Eso viene de una mala comprensión de los
conceptos básicos de la programación imperativa por parte de los
diseñadores de los lenguajes.

Tampoco es buen sitio para ningún otro tipo de función, y mucho menos
para las estáticas.

C# obliga a que asociemos cada función a un único tipo, y hay
funciones que no necesitan estar asociadas a ningún tipo y otras que
necesitan estar asociadas a varios.

El caso de las variables estáticas es una barbaridad mucho más grande.
Estamos obligados a asociar cada variable global al nombre de un tipo,
lo cual no tiene ninguna lógica.

Mostrar la cita
Esta definición es muy vaga.

No está nada claro lo que es una clase. A veces se usa como sinónimo
de tipo, otras veces como sinónimo de tipo por referencia. Otras veces
se usa con el significado de la definición de un tipo, y luego dos
lineas más abajo se usa como sinónimo de tipo. Muchas otras veces se
dan definiciones completamente informales, etc, etc.

Mostrar la cita
Siendo nuevo te será más fácil ver sus defectos.


Saludos
#4 Octavio Hernandez
18/01/2007 - 01:08 | Informe spam
Rob,

Mostrar la cita
Bueno, el mundo no es idealmente orientado a objetos, para qué negarlo
(aunque
yo, como muchos, pienso que en general es más orientado a objetos que
procedimental,
funcional, relacional, o cualquier otra cosa inventada hasta la fecha).

Los creadores de .NET (como antes los de Java) decidieron utilizar la clase
como
elemento de modularización fundamental, y al menos en C# y VB.NET (también!)
*TODO* debe estar dentro de una clase.

Supón que los que inventaron C# hubieran decidido crear una palabra clave
"module",
equivalente a la secuencia "static class" (podrían haberlo hecho sin mayor
problema, creo).

module VariablesGlobales
{
public static int Numero;
}

Bueno, pues ya tienes un módulo!

Te diré que cuando en VB.NET defines un Module, estás creando ni más ni
menos
que una clase (sólo tienes que examinar el ensamblado con ILDASM o Reflector
para convencerte). Un módulo de VB es un tipo especial de clase que solo
contiene
métodos y variables "globales".

La otra diferencia que queda es que en VB (bajo ciertas circunstancias)
podrías referirte
a la variable simplemente usando su nombre: Numero. La exigencia de C# de
poner el
nombre de la clase ("módulo") delante del nombre de la variable:

VariablesGlobales.Numero

te protegerá de uno de los mayores peligros de las variables globales, las
colisiones de
nombres. Y te permitirá de manera segura tener diferentes variables llamadas
Numero
en diferentes "módulos" sin posibilidad de confusión para el compilador.

Salu2 - Octavio
#5 Carlos M. Calvelo
18/01/2007 - 02:02 | Informe spam
Alfredo Novoa schreef:
Mostrar la cita
Bueno, es que en el caso de una clase con variables globales no se
trata
de un 'tipo' sino de un 'módulo' y por eso se llama 'clase'. Lógico!

Mostrar la cita
pues eso ... y otras veces 'módulo' que es un 'tipo' de 'clase' con un

conjunto vacio como dominio y operaciones definidas sobre los elementos
de este conjunto que tienen como rango un conjunto de 'cosas', que se
llaman 'objetos'.

[ Perdón, pero no pude resistir la tentanción. :-) ]

Saludos,
Carlos
Ads by Google
Search Busqueda sugerida