viernes, 12 de marzo de 2010

Colecciones - List, ArrayList

Las colecciones de clases de C# son un conjunto de clases diseñadas específicamente para agrupar objetos y llevar a cabo tareas con ellos.

Tanto la list‹T› como la ArrayList y otras clases de la Collections tienen propiedades muy similares a los arrays de C# (para más detalles sobre estos busquen nueva el tema Matrices y confirmen). Una ventaja fundamental de estas clases sobre los arrays es que puedan crecer y reducir el número de objetos almacenados.

La clase list‹T› esta contenida en System.Collections.Generic, mientras que la clase ArrayList figura en el System.Collections.

La sintaxis para crear una colección list‹T› es la siguiente:
Listtipo› nombre = new Listtipo›();

ArrayList es un objeto creado de una manera similar, aunque sin el argumento de tipo:
ArrayList nombre = new ArrayList ();

Con esta sintaxis ahora podemos crear una list‹T› denominada listacolores:

using System;
using System.Collections.Generic;

public class Lists
{
static void Main()
{
Liststring› listacolores = new Liststring›();
}
}

Añadir artículos a las listas
Una vez que una lista se ha creado hay una serie de métodos que pueden ser llamados a realizar tareas en la lista. En este caso para agrear elementos a la lista de objetos se utiliza el método Add(). Ejemplo:

Liststring› ListaColores = new Liststring›();

ListaColores.Add ("Azul");
ListaColores.Add ("Rojo");
ListaColores.Add ("Verde");
ListaColores.Add ("Amarillo");
ListaColores.Add ("Morado");



Acceso a los elementos
A los elementos individuales en una lista se puede acceder mediante el índice del valor de la partida (teniendo en cuenta que el primer punto del índice es 0, el segundo índice 1 y así sucesivamente). El valor del índice se encuentra entre corchetes tras el nombre de la lista. Por ejemplo, para acceder al segundo punto del objeto ListaColores:

Console.WriteLine (ListaColores[1]);

Un elemento de la lista puede cambiar su valor de manera similar usando el índice combinado con el operador de asignación. Por ejemplo, para cambiar el color de verde a mamey:

ListaColores[2] = "mamey";

Todos los elementos de una lista se puede acceder mediante un bucle foreach. Por ejemplo:

foreach (string color in ListaColores)
{
Console.WriteLine ( color );
}


Cuando compilado y ejecutado, el código de salida anterior mostrara todos los colores.


Inserción de artículos en una lista
Anteriormente se utilizó el método Add() para añadir elementos a una lista. El método Add(), sin embargo, sólo añade elementos al final de una lista. A veces es necesario añadir un nuevo tema en una ubicación específica en una lista. Insert() es el método para este fin específico. Insert() recibe dos argumentos, un entero que indica el índice de localización de la inserción y el tema que se incluirá en ese lugar. Por ejemplo, para insertar un elemento en la posición 2 de la lista seria:

ListaColores.Insert(2, "Blanco");
Ordenando Listas
No hay manera de decirle a C# que ordene automáticamente una lista de artículos despues de añadir. Si los elementos de una lista deben estar siempre ordenados se debe llamar al metodo Sort una vez se añaden nuevos elementos:

ListaColores.Sort();


Búsqueda de elementos en una lista

Se proveen un buen número de métodos con las clases listas y la ArrayList. El método más básico es el Contains(), en el cual cuando se pide a un objeto ArrayList o List devuelve true si el tema se encuentra en la lista, o false si no se encuentra.

El IndexOf() devuelve el valor de un índice de un elemento de la lista. Por ejemplo, el código siguiente muestra el valor de salida de 2, que es el índice de la posición de "Amarillo" en la cadena:

Liststring› ListaColores = new Liststring›();

ListaColores.Add ("Red");
ListaColores.Add ("Green");
ListaColores.Add ("Amarillo");
ListaColores.Add ("Morado");
ListaColores.Add ("Mamey");

Console.WriteLine(ListaColores.IndexOf("Amarillo"));

Si el elemento no se encuentra en la lista devuelve -1.

Esta técnica podría utilizarse para reemplazar un valor con otro. Por ejemplo, sin conocer de antemano el valor del índice del "Amarillo" cadena podemos cambiar a "Negro":

ListaColores[ListaColores.IndexOf("Amarillo")] = "Negro";

El LastIndexOf() método devuelve el valor del índice del último elemento de la lista para que coincida con el punto especificado. Esto es particularmente útil cuando la lista contiene elementos duplicados.

Obtener informacion de una lista

Hay dos miembros de la clase que son útiles para obtener información acerca de una lista de C # o colección de objetos ArrayList. La propiedad Capacity puede ser utilizada para identificar el número de artículos que puede almacenar una colección sin tener que cambiar el tamaño.

El propiedad Count, por otra parte, identifica cuantos artículos se encuentran actualmente almacenados en la lista. Por razones obvias, Capacity sera siempre superior a Count.

En los casos en que existe una gran diferencia entre el Count y Capacity los elementos pueden ser borrados con el método TrimExcess().

Borrado de elementos

Todos los elementos de una lista podrán ser borrados mediante el método Clear():

ListaColores.Clear();

Clear() elimina los elementos de la lista y establece la propiedad Count a cero. La propiedad Capacity, sin embargo, sigue siendo la misma. Para eliminar la Capacity despues de el método Clear() hay que llamar a TrimExcess().

79 comentarios:

  1. JN# Estoy haciendo un proyecto en Microsoft Visual Basic 2005 Express y cuando abro un formulario ya creado me aparece en la barra de tarea, eso es cada vez que abro un formulario.

    espero que entienda la pregunta

    ResponderBorrar
  2. Tratare de contestar lo que pregunta, mire, cuando usted no quiere que un formulario se vea en la barra de tareas en runtime simplemente pongale el ShowInTaskbar falso y listo.

    Ejemplo:

    FormularioX.ShowInTaskbar = false

    Y luego corralo: FormularioX.Show()

    Otra cosa, esta pregunta que hace no tiene nada que ver con este tema en donde la has colocado (List y ArrayList), cuando la pregunta este fuera del tema la debes hacer en la sesion Preguntas y Solicitudes...

    ResponderBorrar
  3. Profe como redusco la cantida de un objeto almacenado utilizando ArrayList

    ResponderBorrar
  4. Dejeme ver si logro interpretar su pregunta: si se refiere a eliminar elementos contenidos en un ArrayList para reducir la cantidad de elementos almacenados es bastante simple, como se explica mas arriba usted puede determinar el indice de un elimento a traves del metodo IndexOf. Por ejemplo:

    int indice = arraylist.IndexOf("elemento");

    Una vez especificado el indice a eliminar lo puede hacer sencillamente utilizando el metodo RemoveAt, asi:

    arraylist.RemoveAt(inidce);

    Ahora bien si lo que desea es recorrer el ArrayList con un ciclo o bucle para eliminar N elementos lo puede hacer asi:

    for(int i=0;i <arraylist.Count;i++)
    arraylist.RemoveAt(indice);

    Nota: Con foreach no se puede borrar de la misma forma porque al tener el enumerador de la coleccion bloqueas las operaciones que afecten al mismo enumerador.

    Si su pregunta no fue respondida haganos saber.

    ResponderBorrar
  5. Lo intente asi y ahora se me esta eliminando la constante que declare, osea el valor que le asigne

    ResponderBorrar
  6. Puedes poner el codigo aqui para ver el problema?

    ResponderBorrar
  7. ArrayList.indexOf numbers = new ArrayList();
    numbers.Add( 7 );
    int numbers = (int)numbers[0];

    ResponderBorrar
  8. IndexOf es un metodo de un objeto, no un objeto. No puedes instanciar un metodo, sino un objeto. Tampoco puedes tener objetos distintos con el mismo nombre.

    El codigo seria:

    Arraylist numbers = new ArrayList();
    numbers.Add( 7 );
    int number = numbers[0];

    number tendria valor de 7.

    ResponderBorrar
  9. Gracias mis hermanos por esta correccion cualquiera cosa les preguntaré

    ResponderBorrar
  10. profe: para crear una array x array y asignar un tamaño con la constante

    ResponderBorrar
  11. Saludos Paul, podrias ser un poco mas explicito en la pregunta?

    ResponderBorrar
  12. como puedo asignarle un tamaño iniciándolo con los valores por defecto (en el caso de enteros)

    ResponderBorrar
  13. Vamos a ver si le podemos responder a su pregunta, entiendo que lo que quiere hacer es
    asignarle dimensiones a un arreglo independientemente de su declaración a través de un método
    o variables. Ej:

    Class Arreglos
    {

    Public int[,]Arreglo;

    public Dimensiones(int X, int Y)
    {
    Arreglo = new int[X, Y];
    }
    }

    Como puede ver el arreglo arriba esta declarado pero no instanciado con dimensiones especificas sino mas bien que las mismas se les pasan cuando se llama el metodo.

    Consejo: cuando vaya a realizar una pregunta o un comentario siempre analise bien antes de escribirlo
    para que cuando lo escriba sea bien explicito, de esa forma podremos responderle lo mas satisfactorio posible.
    Debe saber que dependiendo de la claridad y presición de su pregunta será la respuesta.

    ResponderBorrar
  14. mi tocayo JN# como puedo crear en la clase array funciones de búsqueda y ordenamiento

    ResponderBorrar
  15. Puedes crear Metodos Extendido para clases ya existente en C#. Google te da rapidamente la respuesta a tu pregunta.

    ResponderBorrar
  16. Te respondere con algunas soluciones que mas o menos me llegan y que usted tambien puede investigar. Mire para odernar y buscar en arreglos existen diversos metodos, entre los mas utilizados esta el famoso metodo de burbuja, tambien el binario, etc, ahi esta tambien el metodo Sort de la clase Array el cual ordena de manor a mayor. Ej.:

    string []Arreglo = new string[]{"elemento","elemento","elemento",...}

    int i, j = 0;
    string aux = "";

    for(i=0;i<Arreglo.Length-1;i++)
    {
    for(j=0;j<Arreglo.Length-i-1;j++)
    {
    //uso el método CompareTo() para determinar si el elemento es menor, igual o mayor
    if (Arreglo[j+1].CompareTo(Arreglo[j]) <= 0)
    {
    aux=Arreglo[j+1];
    Arreglo[j+1]=Arreglo[j];
    Arreglo[j]=aux;
    }
    }
    }
    //Lo imprimo si quiero ya estando ordenado

    for(i = 0; i < Arreglo.Length; i++)
    {
    Console.WriteLine(i + " : " + Arreglo[i]);
    }

    Trate de estudiar el metodo CompareTo() y se dara cuenta de otras forams para utilizarlo, con el mismo podra hacer busquedas tambien.

    ResponderBorrar
  17. Tambien hay otras formas de ordenar los arreglos, creo que de hecho hable de eso en el tema matrices, dije que uno de los metodos que se pueden utilizar de esa clase Array era el Sort, tambien esta el Reverse que ordena de mayor a menor, etc, etc, etc.

    Ejemplito:
    //menor a mayor
    Array.Sort(ArregloX);
    //otro orden
    Array.Reverse(ArregloX);
    for (int i = 0; i < ArregloX.Length; i++)
    {
    MessageBox.Show(ArregloX.ToString());
    }

    Consejo para todos: Como dije nuesto colaborador, hermano y colega Juan Alvarez es bueno que aprendan a defenderse con Google, el mismo responde cualquier tipo de pregunta, por lo menos dentro de nuestro campo (Informatica), no deben ser dependientes de un solo medio nunca, tambien es bueno que compongan con este lugar que se le construye a ustedes, si ustedes indagan lo suficiente tambien pueden colaborar con ideas, soluciones, etc.

    ResponderBorrar
  18. Otra forma super facil de buscar en un arreglo es comparando los elementos dentro de las posiciones con un objetivo cualquiera.

    Ej:
    string objetivo, posicion = "";

    Console.WriteLine("Ingrese objetivo que desea buscar en el arreglo:");

    elemento = Console.ReadLine();
    for (int i = 0; i < 10; i ++)
    {
    if (arreglo[i] == objetivo)
    {
    posicion = posicion + ' ' + i;
    }
    }

    Console.WriteLine("El objetivo se encuantra en las posiciones:{0}", posicion);
    Console.ReadLine();

    Espero que tengan muchas ideas a partir de estos ejemplos, repito, NO se detengan aqui,INDAGUEN (google, etc, etc.)

    ResponderBorrar
  19. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  20. using system;
    using system.collections.generic;

    public class list
    {
    static void main ()
    {
    list marcascarro = new list ();
    {
    marcascarro.add("honda");
    marcascarro.add ("bmw");
    marcascarro.add ("mercedes");
    marcascarro.add ("toyota");
    marcascarro.add ("misutbishi");
    }
    }
    }
    jonathan este ejemplo de lista k le mando esta bien?????

    ResponderBorrar
  21. Eso es bueno que usted lo haga y lo pruebe en consola por lo menos puesto que desde ahi cualquier error simple se lo corregiria el mismo VS. A simple vista le diria que la logica de su ejercicio esta bien, aunque con algunos detallitos no validos y/o no necesarios. Por ejemplo al usted instanciar el objeto marcascarro usa la clase list con minuscula y es con L mayuscula, es decir si hace esto en VS lo veria con mucha facilidad, tambien luego de instanciar ese objeto utiliza una llave ({) como si va a abrir un segmento de codigo correspondiente a la instanciacion y eso no es necesario en este caso. Copiare su mismo ejemplo y le quitare o arreglare lo que le acabo de decir:

    using system;
    using system.collections.generic;

    public class list
    {
    static void main ()
    {
    List marcascarro = new List();

    marcascarro.add("honda");
    marcascarro.add ("bmw");
    marcascarro.add ("mercedes");
    marcascarro.add ("toyota");
    marcascarro.add ("misutbishi");
    }
    }

    ResponderBorrar
  22. profe algunas cosas de sus ejemplo anterior (el de dinosaur, que tiene mas arriba) que no la entendiendo y me gustaria saberla , como es el caso de esta linea.

    Console.WriteLine("\nInsert(2, \"Compsognathus\")");
    dinosaurs.Insert(2, "Compsognathus");

    no la entiendo y me gustaria saber si en el ejemplo que yo le presento (marcascarro)
    puedo insertar de la forma que usted explica al en el tema.

    mire quiero saber si asi estaria bien para insertar.

    using system;
    using system.collections.generic;

    public class list
    {
    static void main ()
    {
    List marcascarro = new List();

    marcascarro.add("honda");
    marcascarro.add ("bmw");
    marcascarro.add ("mercedes");
    marcascarro.add ("toyota");
    marcascarro.add ("misutbishi");

    marcacarros.insert(3,"daihatsu");
    si podria ser de esta forma plis.... respondame

    ResponderBorrar
  23. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  24. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  25. Ignora los comentarios anteriores ya que los simbolos < > no salieron.

    Primero, te falta definir el tipo de datos de la lista (es decir, la "clase" de los objetos contenidos en la misma)...la forma correcta de definir una lista es List<tipo> lista = new List<tipo>(); como está en el ejemplo del ilustrísimo JN#. Segundo, todos los metodos de clases del framework empiezan por mayusculas (en C# add y Add no es lo mismo).

    Tu ejemplo estaría correcto de la siguiente forma.

    class Program
    {
    static void Main(string[] args)
    {
    List<string> marcascarro = new List<string>();

    marcascarro.Add("honda");
    marcascarro.Add("bmw");
    marcascarro.Add("mercedes");
    marcascarro.Add("toyota");
    marcascarro.Add("misutbishi");

    Console.WriteLine("La lista inicial de carros es:\n");
    foreach (string marcacarro in marcascarro)
    Console.WriteLine("Carro: " + marcacarro);

    marcascarro.Insert(3, "daihatsu");

    Console.WriteLine("\nLa lista final de carros es:\n");
    foreach (string marcacarro in marcascarro)
    Console.WriteLine("Carro: " + marcacarro);
    }
    }

    Este programa da como resultado:

    La lista inicial de carros es:

    Carro: honda
    Carro: bmw
    Carro: mercedes
    Carro: toyota
    Carro: misutbishi

    La lista final de carros es:

    Carro: honda
    Carro: bmw
    Carro: mercedes
    Carro: daihatsu
    Carro: toyota
    Carro: misutbishi

    ResponderBorrar
  26. El ejemplo extraido del MSDN fue corregido ya que en la declaracion del objeto dinosaurs no se especificaba el tipo.

    using System;
    using System.Collections.Generic;

    public class Example
    {
    public static void Main()
    {
    List<string>
    dinosaurs = new List<string>();

    Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

    dinosaurs.Add("Tyrannosaurus");
    dinosaurs.Add("Amargasaurus");
    dinosaurs.Add("Mamenchisaurus");
    dinosaurs.Add("Deinonychus");
    dinosaurs.Add("Compsognathus");

    Console.WriteLine();
    foreach(string dinosaur in dinosaurs)
    {
    Console.WriteLine(dinosaur);
    }

    Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
    Console.WriteLine("Count: {0}", dinosaurs.Count);

    Console.WriteLine("\nContains(\"Deinonychus\"): {0}",
    dinosaurs.Contains("Deinonychus"));

    Console.WriteLine("\nInsert(2, \"Compsognathus\")");
    dinosaurs.Insert(2, "Compsognathus");

    Console.WriteLine();
    foreach(string dinosaur in dinosaurs)
    {
    Console.WriteLine(dinosaur);
    }

    Console.WriteLine("\ndinosaurs[3]: {0}", dinosaurs[3]);

    Console.WriteLine("\nRemove(\"Compsognathus\")");
    dinosaurs.Remove("Compsognathus");

    Console.WriteLine();
    foreach(string dinosaur in dinosaurs)
    {
    Console.WriteLine(dinosaur);
    }

    dinosaurs.TrimExcess();
    Console.WriteLine("\nTrimExcess()");
    Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
    Console.WriteLine("Count: {0}", dinosaurs.Count);

    dinosaurs.Clear();
    Console.WriteLine("\nClear()");
    Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
    Console.WriteLine("Count: {0}", dinosaurs.Count);
    }
    }

    /* Este codigo de ejemplo produce la siguiente salida:

    Capacity: 0

    Tyrannosaurus
    Amargasaurus
    Mamenchisaurus
    Deinonychus
    Compsognathus

    Capacity: 8
    Count: 5

    Contains("Deinonychus"): True

    Insert(2, "Compsognathus")

    Tyrannosaurus
    Amargasaurus
    Compsognathus
    Mamenchisaurus
    Deinonychus
    Compsognathus

    dinosaurs[3]: Mamenchisaurus

    Remove("Compsognathus")

    Tyrannosaurus
    Amargasaurus
    Mamenchisaurus
    Deinonychus
    Compsognathus

    TrimExcess()
    Capacity: 5
    Count: 5

    Clear()
    Capacity: 5
    Count: 0

    ResponderBorrar
  27. Una gran recomendacion: Dejen que sus codigos expuestos sean evaluados en visual studio, eso les ahorraria tiempo, ya que les dice explicitamente los errores en su codigo y no tendrian necesidad de consultar a una entidad externa.

    ResponderBorrar
  28. juan muchas gracias por la correccion, pero es que estaba confundida con el ejemplo de dinosaurio y pense k no era necesario poner el tipo, pero ya veo que jonathan lo aclaro, gracias , ahora estoy mas clara

    ResponderBorrar
  29. jhonatan necesito hacerle varias preguntas sobre el proyecto, por favor respondame para k me pueda ayudar , gracias.

    ResponderBorrar
  30. Tengo una lista de stock: list stock = new list(); a la cual le quiero cargar productos.

    Pero no se como hacer para que no guarde elementos repetidos.

    Quiero q al ingresar un objeto en caso de que ya exista en la lista solo incremente el atributo cantidad del objeto en 1.

    en caso que no exista ahun en la lista que lo agregue.

    o q los cargue a todos pero a la hora de mostrar que muestre los distintos objetos con el atributo cantidad detallando la cantidad de objetos q hay.

    Si alguien sabe le agradeceria.

    ResponderBorrar
  31. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  32. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  33. Lo he puesto dos veces puesto que primero estaba invertida la condicion y luego porque no salieron los < >...

    Saludos, veo que su necesidad es la de encontrar si lo que esta tratando de insertar en su lista existe o no, para eso podria utilizar el metodo Find.

    No es la unica forma de hacerlo, supongo hay varias, una de ellas seria la siguiente:

    static void Main(string[] args)
    {
    List<string> Productos = new List<string>();

    Productos.Add("pera");
    Productos.Add("mazana");
    Productos.Add("uva");

    Productos.Find(BuscarRegistrar);

    }
    private static bool BuscarRegistrar(string p)
    {
    if (p.ToLower() == "manzana")
    {
    //Aqui pone sus codigos para que incremente el elemento cantidad de su lista

    return true;
    }
    else
    {
    //Aqui pone sus codigos para que inserte el producto dentro de la lista. La manzana seria un valor de una variable cualquiera que usted este capturando en cualquier lado.

    return false;
    }
    }

    /*Si quiere lo hace creando un delegado explicitamente, algo que NO es necesario puesto que C# y VB deducen el delegado correcto a partir del contexto y lo crean automáticamente.*/

    ResponderBorrar
  34. Gracias pero p.Tolower no es correcto. quisas en java si.

    ResponderBorrar
  35. ToLower es correcto ... http://msdn.microsoft.com/en-us/library/system.string.tolower(VS.71).aspx

    ResponderBorrar
  36. Mire amigo anonimo, usted debe saber que siempre que contestamos tratamos de probar que lo que decimos es correcto, la idea de este blog no es desinformar. Si usted agarra y copia ese codigo que esta ahi y lo pega en su cosola C# se dara cuenta que es correcto.

    Es cierto que nos equivocamos eso no lo negaremos nunca pero cuando eso sucede simplemente corregimos.

    Si usted quiere ayudar bienvenido sera, pero la forma de decir que que algo es incorrecto simplemente ESO NO AYUDA, lo que ayuda es que usted escriba lo que cree es correcto, asi lo debatimos de ser necesario.

    ResponderBorrar
  37. Gracias por la correccion, estuve viendo y la clase String posee el metodo ToLower().

    Mil disculpas. Saludos.

    ResponderBorrar
  38. JN# diculpa tengo una pregunta y es....se puede crear un lista y dentro de esa lista otra...si es posible esto..m puedes mostrar como...Gracias por su respuesta..

    ResponderBorrar
  39. Claro que si, el metodo Add() espera un valor de un tipo del cual fue declarada la Lista, muy bien ese tipo podria ser otra lista. Por ejemplo:

    class Listas
    {
    public List<List<string>
    >
    ListadeLista = new List<
    List<
    string>
    >
    ();

    public List<string> hija = new List<string>();
    }


    class Program
    {
    static void Main(string[] args)
    {
    Listas obj = new Listas();
    obj.hija.Add("Elemento1");
    obj.hija.Add("Elemento2");
    obj.hija.Add("Elemento3");

    obj.ListadLista.Add(obj.hija);

    }
    }

    Ahi delcaro una lista que espera valores de tipo listas llenas de strines, luego en el Main a dicha lista le paso un objeto de tipo lista. Asi mismo se haria con cualquier otro tipoo.

    ResponderBorrar
  40. Hola, disculpa la molestia, tengo una pequeña duda, quiero mostrar los elementos de una lista, con el foreach, pero la lista es de tipo Usuario(una clase que yo cree), entonces el c# me lanza un error en el foreach, algo con "GetEnumerator". Yo pienso que es porque la lista no es de un tipo de dato definido en c# pero no estoy segura, y en ese caso no se solucionar el problema, podria mostrarme como ? Gracias

    ResponderBorrar
  41. JN# : Hola, disculpa la molestia, tengo una pequeña duda, quiero mostrar los elementos de una lista, con el foreach, pero la lista es de tipo Usuario(una clase que yo cree), entonces el c# me lanza un error en el foreach, algo con "GetEnumerator". Yo pienso que es porque la lista no es de un tipo de dato definido en c# pero no estoy segura, y en ese caso no se solucionar el problema, podria mostrarme como ? Gracias

    ResponderBorrar
  42. Hola, no es ninguna molestia, cualquier pregunta acerca de lo que tratamos en el blog es bien venida. Acerca de tu pregunta me dices que estas intentando imprimir con un foreach los elementos de tu lista y que la lista es tipo Usuario, lo primero que me gustaria ver es como estas tratando de imprimir los elementos de esa lista, lo mas factible es que me muestres tu codigo. Quizas te ayudaria saber que no puedes intentar imprimir un objeto de ese tipo Usuario al que te refieres sino un miembro de ese objeto, como por ejemplo Usuario.Nombre

    ResponderBorrar
  43. Me gustaria saber cual es la diferencia entre los arrayList y las coleccion list

    ResponderBorrar
  44. La diferencia a nivel de comportamiento (métodos)es mínima. Ambas corresponden como arriba se describe al mismo espacio de nombre, solo que las ArrayList no son genéricas y por tanto no heredan de las interfaces genéricas: IList<T>, ICollection<T>,
    IEnumerable<T> solo hereda de las interfaces colecciones IList, ICollection, IEnumerable, ICloneable, esta ultima no es heredada por las List<T> por tanto en este tipo de lista NO permite clonaciones o creaciones de sobras.

    ResponderBorrar
  45. Tengo una List y quiero mostrala. El tema es que no hay una cantidad fija puede ser 1,3, o quien sabe.
    Como hago para mostrar eso en un Formulario.
    Gracias y espero pronta respuesta.

    ResponderBorrar
  46. Lo sentimos pero no podemos contestar preguntas sin sentido y que ni siquiera usted misma sabe que es lo que quiere. Le pedimos por favor que si en verdad usted esta interesada que reformule su pregunta, hágala clara, díganos que intenta hacer y que le esta saliendo mal o no puede hacer y con gusto le ayudaremos.

    ResponderBorrar
  47. Ciertamente la pregunta no hacia ningun sentido y es imposible ayudarle. Tienes una lista de que?, mostrarla en que tipo de formulario?. Si puedes reformulala, o pon algun ejemplo de codigo de que es lo que tienes.

    ResponderBorrar
  48. hola! kisiera saber si tienen ejemplos de listas en c#...gracias d antemano :)

    ResponderBorrar
    Respuestas
    1. Lee este articulo:

      http://aprende-csharp.blogspot.com/2010/03/colecciones-list-arraylist.html

      Borrar
  49. como ingresar mi nombre en una lista y que esta la ordene correctamente ejemplo: erick
    insertar letra final: k
    insertar letra inicial: e
    insertar letra media: i
    insertar letra ” : r
    ” ” ” : c
    y que todas esta aparescan ordenas de esta forma = ( erick)
    utilizando la clase list

    ResponderBorrar
    Respuestas
    1. De antemano te respondo que harás un mega esfuerzo para lograrlo. Como los caracteres no tienen un orden lógico u ordinal "erick" en algun sitio deberás tenerlo como referencia para validarlo contra los items de tu Array o Lista y luego jugar con algo parecido al método de burbujas (resignando valores entre items) para poder cambiar el Item[x] por el Item[y] respecto al caracter de referencia que corresponda.... sabiendo que deberás repetir/iterar este métodoc con cada elemento Item[n] de tu Array o Lista.

      Borrar
  50. necesito un ArrayList de menor a mayor en funcion de la cantidad de caracteres que tiene cada item,Como haGo eso?

    ResponderBorrar
    Respuestas
    1. Prueba produciendo otro ArrayList midiendo el Length de item y agregandolo a este nuevo ArrayList

      Borrar
  51. *Necesito ordenar un ArrayList....

    ResponderBorrar
  52. Hola quisiera hacer un programa en C# me ayudan con un par de ejemplos

    ResponderBorrar
    Respuestas
    1. Aquí hay algunos ejemplos, toma el que creas mas te convenga www.google.com Luego cuando estes programando si tienes alguna pregunta sobre tu código pues nos la haces.

      Borrar
  53. Aquí tienes uno bueno:

    public class Hello1
    {
    public static void Main()
    {
    System.Console.WriteLine("Hello, World!");
    }
    }

    ResponderBorrar
  54. Hola! estoy trabajando con las list en un programa de polinomios, el programa genera "x" numero de polinomios aleatoriamente y los quiero almacenar en la lista, sin embargo utilizando el .Add, o Insert solo me almacena "x" veces el último polinomio generado...¿que puedo hacer para que la lista almacene los "x" polinomios diferentes?

    ResponderBorrar
  55. Estoy por pensar que quizás no estés utilizando correctamente un bucle, pega aquí tu código para que qué esta incorrecto.

    ResponderBorrar
  56. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  57. Como te había dicho antes, lo que tienes el el insert mal empleado o fuera del bucle. Intenta dentro de este if:
    if (j < indice)
    {
    ArrCoefs[j] = a.Next(-10,10);
    Aleatorio = new Polinomio(ArrCoefs);
    chklstbxAleatorios.Items.Add(Aleatorio.ToString(), false);
    listpoli.Insert(i,Aleatorio);
    }

    ResponderBorrar
  58. Holaa!! tengo un nuevo reto... Ahora debo crear un programa que grafique funciones cuadraticas, pero no he encontrado como crear una grafica en c sharp. Puedes ayudarme??? gracias

    ResponderBorrar
    Respuestas
    1. Hola Estrela, la verdad es que eso es un tema bastante amplio, por lo pronto te puedo decir que para crear gráficos puedes utilizar la clase Graphics y su método CreateGraphics(), no es tan complejo dibujar "figuras simples". Puedes meter un objeto de tipo Bitmap dentro de un Graphics y manipularlo utilizando las clases Pen, Brush, Font, Color, etc. Mi mejor consejo en este sentido es que primero te leas acerca de estas clases, las implemente y cuando tengas algun inconveniente con tu código pues nos preguntas y con gusto trataremos de ayudarte.

      Borrar
  59. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  60. No estamos para hacer tu trabajo, podemos ayudarte resolver errores o snippets de con mejores soluciones a alguna que ya tengas hecha. Si realmente quieres ayuda de nosotros, empieza a hacer tu trabajo y el confusiones o errores que tengas entonces nos consultas.

    ResponderBorrar
  61. Buenas noches, tengo una duda con las lista, estoy haciendo una clase que me trae (id,nombre,apellido) de la base de datos, estos datos deseo almacenarlos en una lista y llamarla desde cualquier formulario. Pregunta
    1. como hago para almacernarlos en la lista los tres datos si son varios registros.
    2. Como hago para sacar esa informacion en un formulario con un foreach.

    Gracias de antemano por sus respuestas.

    ResponderBorrar




  62. ArrayList. Programas de manejar datos inciertos.
    Un ArrayList acomoda elementos adicionales, más
    de lo que podría anticipar. Esta capacidad es
    útil.

    Esta clase funciona de manera eficiente, cambia
    el tamaño interno, hace que muchos programas
    más simple. En Java se puede especificar el tipo
    de elementos (una clase). Nos inicializamos con
    datos.

    Se crea un ArrayList. Utiliza la sintaxis de la
    inferencia de diamantes en el lado derecho. Los
    caracteres <> se infieren de la izquierda. El
    tipo es entero.

    Tamaño:
    Llamamos al método size () en la instancia de
    ArrayList. Esto devuelve el número de elementos
    de la colección.

    Obtenemos:
    Finalmente llamamos al método get (), que recibe
    el índice del elemento de conseguir. Nos da un bucle
    sobre cada índice.

    ResponderBorrar
  63. Quisiera saber como puedo aumentar el limite de un ArrayList, alguien me podria explicar?

    ResponderBorrar
  64. buenas noches.
    me podrían explicar como imprimo los elementos de una lista, en una sola linea.
    Gracias

    ResponderBorrar
  65. hola quiero crear un programa para windows que tenga una lista de palabras las cuales se van a decifraar por medio de numeros dependiedndo de su posicion en el abecedario
    el caso es que quiero que tome un elemento de la lista y me muestre una serie de operaciones para resolver y que el resultado sea la posicion de la letra en el abecedario
    pero quiero que la palabra que forme sea sorpresa

    ResponderBorrar
  66. Buenas.. estoy haciento un trabajo, y no estaría entendiendo que tendria que responder a esta pregunta.. si me pueden ayudar.. graciass!!..

    ¿Que ocurre en un objeto ArrayList cuando se intenta establecer la propiedad Capacity a un valor menor que el tamaño actual del vector , y con la propiedad Count?

    ResponderBorrar
    Respuestas
    1. Lo que sucede es que el .NET Framework hara que las Colecciones ArrayList de todas formas crezcan automaticamente con el numero de elmentos que contenga, igual sucede con la propiedad Count, de manera automatica va a variar dependiendo del numero de elementos insertados y no del valor que trates de establecer manualmente.

      Borrar
  67. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  68. Necesito generar un programa utilizando un arreglo tipo list<> que permita manejar varias cuentas de usuario, donde se pueda retirar e ingresar un valor de su cuenta, utilizando c# pero no se como hacerlo

    ResponderBorrar
  69. Necesito hacer un programa que genere una arreglo tipo list<> que permita manejar varias cuentas de usuarios, donde se pueda retirar o depositar un valor de su cuenta pero no se como puedo hacerlo, por favor una ayuda

    ResponderBorrar
  70. Necesito hacer un programa que genere una arreglo tipo list<> que permita manejar varias cuentas de usuarios, donde se pueda retirar o depositar un valor de su cuenta pero no se como puedo hacerlo, por favor una ayuda

    ResponderBorrar
  71. Necesito hacer un programa que genere una arreglo tipo list<> que permita manejar varias cuentas de usuarios, donde se pueda retirar o depositar un valor de su cuenta pero no se como puedo hacerlo, por favor una ayuda

    ResponderBorrar

Preguntas;Comentarios;Aportes;Criticas Positivas;Recomendaciones.