Array di oggetti

martedì 06 giugno 2006 - 09.51

kiara83 Profilo | Junior Member

Qualcuno sa come si crea un array di oggetti in c#, sempre che sia possibile?

Cteniza Profilo | Guru

Credo per oggetti intenda "controlli" vero?
In ogni caso ogni oggetto (classe) è un "tipo".
La sintassi pertanto per definire un array è sempre la stessa.
TextBox[] textBoxes = new TextBox[10];

kiara83 Profilo | Junior Member

scusa, hai ragione mi sono spiegata male, quello che voglio fare è creare un array di dimensioni variabili, ogni volta che faccio un drag & drop mi aggiunge un elemento, che contiene oggetti facenti parte della classe PropImmagini che ho creato.
Non so come fare a creare un array dinamico.
Ogni volta che faccio drag&drop mi aggiunge un elemento all'array, se non ho ancora elementi lo deve creare. Ma non so bene come va messo.

Cteniza Profilo | Guru

Su C# non esiste la possibilità di ridimensionare gli array.
Per i tuoi scopi puoi usare una collection (arraylist, sortedlist, ecc) oppure ridimensionare gli array "a mano".
un piccolo esempio:
/*
* Created by SharpDevelop.
* User: Luciano
* Date: 10/01/2006
* Time: 22.57
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Data;

namespace ProvaRedimCs
{
class MainClass
{
[STAThread]
public static void Main(string[] args)
{
string[] s = {"a","B","C","D"};
Console.WriteLine("Prima = {0}", s.Length);
s = Ridimensiona(s, s.Length + 1,true);
s[s.Length - 1] = "z";
Console.WriteLine("Dopo = {0}",s.Length);
for (int x = 0; x < s.Length; x++)
{
Console.WriteLine(s[x]);
}
}
public static string[] Ridimensiona(string[] pArray, int pNewLength, bool pPreserve)
{

int j = pArray.Length;
if (pNewLength < 1)
pNewLength = 1;
string[] n = new string[pNewLength];
if (j > pNewLength)
j = pNewLength;
if (pPreserve)
Array.Copy(pArray,n,j);
return n;
}
}
}

kiara83 Profilo | Junior Member

Ma se uso un ArrayList, quando faccio
myArray.Add()
come faccio a mettere dentro la parentesi il mio oggetto di tipo PropImm che avrà ad esempio un nome,un colore e una largezza (x fare un esempio) e quindi dovrei passargli ad esempio (mia immagine, rosso, 10).
Si può mettere una cosa così dentro la parentesi? e poi, devo mettere davanti
(PropImmagini)
per dirgli che quell'elemento è di tipo propImmagini?

Cteniza Profilo | Guru

Con il framework 2.0 ci sono i generics che sono stati introdotti proprio per gestire queste cose.
Tu appendi il tuo oggetto e poi lo ritrovi esattamente come l'hai appeso, con tutte le sue proprietà già impostate (se no allora a che servierebbe?).

kiara83 Profilo | Junior Member

Purtroppo non ho il framework 2.0 ma ho una versione precedente. Avevo visto su msdn2 la possibilità di usare i generics, ma purtroppo non ce l'ho.
Posso fare lo stesso in qualche modo con ArrayList??

kiara83 Profilo | Junior Member

Se metto così va bene lo stesso?

private ArrayList alElements;
alElements = new ArrayList();

PropImm elem = new PropImm();

// Imposto le proprietà

.....

// Aggiungo l'oggetto alla lista
alElements.Add(elem);

Cteniza Profilo | Guru

Si, certamente solo che devi controllare di appendere solo oggetti dello stesso tipo.
Per quanto riguarda il framework 2.0 puoi scaricarti la versione express di visual studio 2005 da microsoft che è gratuita.
http://community.visual-basic.it/lucianob/archive/2006/02/24/16876.aspx
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5