deadmox
Usuario (México)

Manejo de memoria estática ¿Qué es? Es la memoria que se reserva en el momento de la compilación antes de comenzar a ejecutar el programa. Los objetos son creados al iniciar el programa y destruidos al finalizar el mismo. Mantienen la misma localizacion en memoria durante todo el transcurso del programa hasta que son destruidos Los objetos administrados de este modo son: variables globales, variables estáticas de funciones, miembros static de clases y literales de cualquier tipo. Características: Su principal característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez, dentro de este grupo de datos se encuentra: enteros, reales, caracteres, boléanos, enumerados y subrangos (los últimos no existen en algunos lenguajes de programación) El inconveniente de la reserva estática es que la cantidad de memoria se reserva siempre antes de conocer los datos concretos del problema. Tampoco se adapta bien a la memoria real disponible del ordenador en que se esta ejecutando el programa. Las estructuras de datos estáticas: Son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa. La forma más fácil de almacenar el contenido de una variable en memoria en tiempo de ejecución es en memoria estática o permanente a lo largo de toda la ejecución del programa. No todos los objetos (variables) pueden ser almacenados estáticamente. Para que un objeto pueda ser almacenado en memoria estática su tamaño (número de bytes necesarios para su almacenamiento) ha de ser conocido en tiempo de compilación. Como consecuencia de esta condición no podrán almacenarse en memoria estática: Los objetos correspondientes a procedimientos o funciones recursivas, ya que en tiempo de compilación no se sabe el número de variables que serán necesarias. Las estructuras dinámicas de datos tales como listas, árboles, etc. ya que el número de elementos que las forman no es conocido hasta que el programa se ejecuta. Ejemplo using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _1._2 { public class ejemploestatica {//Declaracion de un arreglo static string con datos predefinidos, la memoria designada al arreglo esta presente desde el inicio del programa hasta el cuando se libera static String[] instruccion = new String[] { "nPais: estados unidosncapital: Washington DC ", "nPais: Estados unidos Mexicanosncapital: Mexico DF", "nPais: Alemaniancapital: Berlin" }; public static void imp (int a){ //metodo estatico en donde se realiza la impresion de un bloque del arreglo el que elija el usuario try //inicio del bloque try que capturar el error cuando el usuario elija una opcion que exceda al arreglo { Console.Clear(); Console.Write("Datos Pais: {0}", instruccion[a-1]); } catch (Exception e)//en el catch el exception esta al pedo, pero con ella se pueden usar los metodos de su clase para desplegar datos del error { } } public static void Main() { int s; //menu do { Console.Clear(); Console.Write("Menu Paisesn1.-EUAn2.-Mexicon3.-Alemanian4.-Salir"; Console.Write("nIngrese opcion: "; s = int.Parse(Console.ReadLine()); imp(s); //llamada al menu como es estatico no se tiene que crear objeto se envia la variable s como parametro para que el metodo elija el bloque del arreglo Console.ReadKey(); } while (s != 4); Console.ReadKey(); } } } Aca se despliega el menu Aca esta el despliegue de la informacion del arreglo Gracias por pasar por este crap