Dichiarazione di un Array

martedì 30 novembre 2004 - 17.08

Biscottina Profilo | Newbie

Ciao a tutti avrei bisogno di dichiarare un array, parto dicendovi che io ho definito la seguente classe:

public class StructurFileS
{

public string ID_File;
public string ID_Parent;
public string Path;
public System.Byte[] FCI= new byte [255];
public int Len_FCI;
public int IndexOf;
}

Ora vorrei definire un array che abbia 255 campi tutti strutturati come la classe sopra descritta... Come posso fare???

Bacio da Lucia

Brainkiller Profilo | Guru

Forse intendi così ?

StructurFileS arr=new StructurFileS[255];

ciao
david

Biscottina Profilo | Newbie

Ok... Io ho dichiarato l'array in quel modo che mi gai descritto tu... :

StructurFileS[] FileSystem =new StructurFileS[255];

Provo ad inizzializzarlo nel seguente modo ....

private int Inizialaze_Array()
{
int ret = 0;


for (int i = 0; i < 255; i++)
{

for (int y = 0; y < 255; y++)
{
FileSystem[i].FCI[y] = 0;
}
FileSystem[i].ID_File ="";
FileSystem[i].ID_Parent = "";
FileSystem[i].IndexOf =-1;
FileSystem[i].Len_FCI =-1;
FileSystem[i].Path = "";
}

return ret;

}

Ma ottengo il seguente errore:

Eccezione non gestita di tipo "System.NullReferenceException"

Informazioni aggiuntive: Riferimento a un oggetto non impostato su un'istanza di oggetto.

Come posso risolvere il problema????

Grazie milleeeee

Bacio Lucia

ysdemarc Profilo | Expert

Scusami ma sembra che nella tua classe manchi il costruttore...

senza di esso non puoi istanziarla..

ciao

Biscottina Profilo | Newbie

Cos'è il costruttore....????

Mi aiuti.... per piacereeeeeeeeeeeeeee

Biscottina Profilo | Newbie

Cos'è un costruttore..... mi aiuti... grazie

Biscottina Profilo | Newbie

Il costruttore c'è ... se guardi bene è presente nel primo thread

ysdemarc Profilo | Expert

Ciao, scusami se rispondo solo ora ma avevo un problema coo firewall e non riuscivo più a vedere il forum.

il costruttore deve stare nella classe. O meglio tut istanzi la classe come se avesse il costruttore èp vero, ma questo amnca nella classe originaria cioè la tua classe:

public class StructurFileS
{

public string ID_File;
public string ID_Parent;
public string Path;
public System.Byte[] FCI= new byte [255];
public int Len_FCI;
public int IndexOf;
}


dovrebbe diventare così

public class StructurFileS
{

public string ID_File;
public string ID_Parent;
public string Path;
public System.Byte[] FCI= new byte [255];
public int Len_FCI;
public int IndexOf;
public StructurFileS()
{
// questo è il costruttore
}
}


se ti posso dare un'altro consiglio non usare dichiarazioni public delle variabili per quando possibili, ma istruzioni private e per la loro lettura crea i metodi opportuni con le property.

Ciao!

ysdemarc Profilo | Expert

scusami ancora ma siono stato poco esatto...
tu la classe la istanzi così:

StructurFileS arr=new StructurFileS[255];

quindi puoi usare il polimorfismo in modo da avere più costruttori e aggiungere anche questo (oppure modificare il costruttore vuoto e mettere solo il seguente):

public StructurFileS(int numByte)
{
FCI= new byte [numByte];
...
}


ok? Ciao

Biscottina Profilo | Newbie

Ecco il pezzo di codice dove dichiaro l'array.
E' corretto???

Aiutatemi...........................

Grazie milleeeeeeeeeeeeeeeeeee

namespace VariabiliGlobali
{
public class Globals
{
public static StructurFileS[] FileSystem =new StructurFileS[255];
public static int CominicationProtocol;
public static int cardConnectionHandle;
}
}

namespace WinscardWrapLibrary
{

public class StructurFileS
{

public string ID_File;
public string ID_Parent;
public string Path;
public System.Byte[] FCI= new byte [255];
public int Len_FCI;
public int IndexOf;
public StructurFileS()
{
// questo è il costruttore
}

}

}

ysdemarc Profilo | Expert

ciao
un istanziamento in questo modo non fa altro che creare una matrice di tipo oggetto dichiarato
cioè in questo modo
public static StructurFileS[] FileSystem =new StructurFileS[255];

dichiari solo una matrice FileSystem di tipo StructureFileS che può contenere fino a 255 oggetti di tipo StructureFileS.

prima di assegnare un valore devi pero assegnare un oggetto all'elemento della matrice
cioè
FileSystem[i] = new StructureFileS();

e poi puoi assegnare i valori

FileSystem[i].ID_File ="";

infatti l'errore è nullRefereceException che significa che tentavi di leggere o scrivere qualcosa che ancora non è stato referenziato.

Fammi sapere come va. Ciao!

Biscottina Profilo | Newbie

...................................Grazieeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ............................ Grazieeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee................................

Olèèèèèèèèèèèèèèèèèèèèèèèèèèè
olèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèè

finalmente funzionaaaaaaaaaaaa
sono molto contentaaaa

grazieeee
sei stato gentilissimoooooo

ysdemarc Profilo | Expert

di niente....

mi devi scusare che a rileggere i post la prima volta avevo capito ben poco su quello che dovevi fare...

...sono un pò distartto...

Ciao!
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