MATRICES
Los arrays siempre se pasan por referencia. Cualquier variable de objeto o los arrays se pasan siempre por referencia. Eso significa que si paso un array a un método, cuando alguien toque ese array estará tocando el array original.
tipo [ ] nombre;
Los arrays son estáticos.
Por una lado tenemos declarar el array y por otro inicializarlo o instanciarlo, siempre hay que hacer una asignación.
Cuando trabajamos con tipos básicos no hay que hacer instanciaciones, sin embargo, cuando nos hacemos arrays de objetos de cualquier tipo de objeto no vale con asignar a cada variable array un elemento... tenemos que instanciar cada uno de ellos que hemos creado, porque si no dice que tienes una variable de objeto, creamos un array de objeto, pero no hemos instanciado cada uno de ellos.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CURSO_Personas;
namespace Matrices
{
class Program
{
static void Main(string[] args)
{
CPersona[] personas = new CPersona[2];
CPersona p = new CPersona("Juan", "Perez", "Perez");
CPersona pp = new CPersona();
int edad = 0;
int anos = 0;
string nombre;
string apel1;
string apel2;
edad = 7;
anos = edad;
Console.WriteLine("Edad: {0}\tAños: {1}",edad,anos);
anos = 8;
Console.WriteLine("Edad: {0}\tAños: {1}", edad, anos);
pp = p;
Console.WriteLine("P: {0}\tPP: {1}", p.NombreCompleto(false),
pp.NombreCompleto(false));
pp.nombre = "Jose";
Console.WriteLine("P: {0}\tPP: {1}", p.NombreCompleto(false),
pp.NombreCompleto(false));
/*for (int i = 0; i < personas.Length; i++) {
nombre = EntradaTextoConsola("Nombre persona: ", false);
apel1 = EntradaTextoConsola("Apellido1 persona: ",false);
Console.Write("Nombre apellido 2 ({0}/5): ", i+1);
apel2 = EntradaTexto(true);
personas[i] = new CPersona(nombre, apel1, apel2);
*/
/*
personas[i] = new CPersona(EntradaTextoConsola("Nombre persona: ", false),
EntradaTextoConsola("Apellido 1: ", false),
EntradaTextoConsola("Apellido 2: ", true));
*/
/*
}
*/
/*
Console.Clear();
Console.WriteLine("Nombre \tApellido 1 \tApellido 2");
Console.WriteLine("------------------\t--------------\t--------------");
for (int i = 0; i < personas.Length; i++)
{
Console.WriteLine("{0}\t{1}\t{2}",
personas[i].nombre.PadRight(18,' '),
personas[i].apellido1.PadRight(14,' '),
personas[i].apellido2.PadRight(14,' '));
}
*/
Console.Read();
}
public static string EntradaTextoConsola(string mensaje,
bool admiteVacio)
{
string resultado;
Console.Write(mensaje);
resultado = EntradaTexto(admiteVacio);
return resultado;
}
public static string EntradaTexto(bool admiteVacio) {
string resultado;
do {
resultado = Console.ReadLine().Trim();
}while(resultado.Length <=0 && admiteVacio==false );
return System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(resultado);
}
}
}
Hacer un:
override método ToString() con lo más útil.
Crear constructor de copia y crear un método CopyTo.
a lo que hemos visto.
==============================**
Los arrays implementan IEnumerable nos permite movernos entre los miembros del array, nos permite desarrollar el como recorrer los arrays.
// Resumen:
// Provides methods for creating, manipulating, searching, and sorting arrays,
// thereby serving as the base class for all arrays in the common language runtime.
[Serializable]
[ComVisible(true)]
public abstract class Array : ICloneable, IList, ICollection, IEnumerable
Las interfaces no declaran ningún método ni propiedad ni clase, es un envoltorio.
Con los dos puntos, heredamos e implementamos. Heredamos de las clases e implementamos de las interfaces.
Sirven, para no utilizar un bucle determinado for(). Proporciona una herramienta llamada foreach …