Come inizializzare alcuni oggetti

mercoledì 02 settembre 2009 - 18.24

ravalon Profilo | Expert

Salve, in un mio progetto ottengo degli errori in fase di runtime su alcuni oggetti che a quanto pare non ho inizializzato e che, mi si avverte, potrebbero portare un valore NULL in quanto vengono utlizzati prima di aver assunto un valore....

Vi dico quali sono e come li ho dichiarati cosi mi potete dare una dritta su come inizializzarli


***************************************
1) Dim ArrayTuttiProdotti As Array

2) Public Function Cripta_Rijndael(ByVal strDaCriptare As String) As Byte()
--- come inizializzo un Byte ?

3) Dim NuovoCommand As System.Data.Common.DbCommand


Grazie mille


freeteo Profilo | Guru

Ciao,
io direi di usare il new dove serve, e magari se riesci non usare "Array" ma usa qualcosa di più tipizzato come List<T> dove "T" è il tuo tipo, quindi:


>1) Dim ArrayTuttiProdotti As Array
userei piuttosto: Dim arrayProdotti As New List(Of Prodotto)
ps: ho messo Prodotto come classe, intendendo che poi avrai questa classe alla qualedarai le varie proprietà a seconda di quello che deve contenere e quidni del "senso" che ha questi oggetti che stai raggruppando nella collezione.


>2) Public Function Cripta_Rijndael(ByVal strDaCriptare As String)
>As Byte()
>--- come inizializzo un Byte ?
Dim pippo() as New Byte(100)
ma se non sai la dimensione inizialmente puoi dedurla nel codice tipo:
Dim size As Integer
...
Dim pippo() as New Byte(size)

oppure direttamente da qualche metodo:
Dim pippo() as Byte = Encoding.Default.GetBytes(stringaDaDecriptare)


>3) Dim NuovoCommand As System.Data.Common.DbCommand
nuovoCommand = tuaConnection.CreateCommand()

oppure se usi i DbFactory di ado.net:
DbProviderFactory factory = DbProviderFactories.GetFactory("...name..");
DbConnection conn = factory.CreateConnection();
conn.ConnectionString = connectionString;
DbCommand comm = conn.CreateCommand();

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ravalon Profilo | Expert

Ci sono alcune cose che mi danno problemi...cioè non che non funzionano ma non ho mai usato i generics....

ad esempio se dichiaro al posto di array una LIST poi la posso usare ESATTAMENTE come uso un array ?

E della classe PRODOTTO sinceramente non ho capito cosa intendi....non posso mettere dim Array as new list(T of integer) o qualcosa del genere ?

freeteo Profilo | Guru

>Ci sono alcune cose che mi danno problemi...cioè non che non
>funzionano ma non ho mai usato i generics....
appena capisci bene cosa sono, vedrai che anche tu come me li userai praticamente sempre
Sostanzialmente sono collection dove puoi specificare il tipo dei dati che contengono, diciamo che sono un'evoluzione di ArrayList dove potevi aggiungere qualsiasi cosa, ma poi dovevi sempre farti il cast quando lo andavi a recuperare (oltre a possibili errori a runtime).
Ti lascio un link ufficiale: http://msdn.microsoft.com/en-us/library/ms379564(VS.80).aspx


>ad esempio se dichiaro al posto di array una LIST poi la posso
>usare ESATTAMENTE come uso un array ?
certo, anzi hai dei metodi in più e soprattutto come ti dicevo, sei tipizzato quando vai ad operare sugli elementi.


>E della classe PRODOTTO sinceramente non ho capito cosa intendi....non
>posso mettere dim Array as new list(T of integer) o qualcosa
>del genere ?
Io tipicamente tendo a tipizzarmi quando faccio applicazioni, in modo da avere poi le cose che mi servono sempre disponibili.
Tecnicamente io avrei fatto una classe Prodotto,con delle sue proprietà ad esempio:

Public Class Prodotto Public Property Id As Integer End Property Public Property Nome As String End Property Public Property Descrizione As String End Property ....etc... End Class

e poi avrei fatto una List(Of Prodotto) come collection, in modo che se accedo agli elementi posso avere "in canna" sempre le sue proprietà (appunto Id,Nome, Descrizione...) da intellisense:
miaTextBox.Text = miaCollectionProdotti(0).Nome
cose di questo genere...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ravalon Profilo | Expert

Ti ringrazio vedrò di capirci qualcosa allora

ravalon Profilo | Expert

ti ringrazio....

ho corretto il problema del NuovoCommand come mi hai detto...

per il resto, per il Byte non posso prevedere quanto sia lungo dato che serve per criptare una password...

per gli array per ora preferisco lasciarli cosi dato che una modifica sarebbe pesante e in questo momento non posso permettermelo dato che il progetto funziona bene ed ho poco tempo prima della presentazione....

freeteo Profilo | Guru

>ti ringrazio....
>ho corretto il problema del NuovoCommand come mi hai detto...
ok, se ti è stata utile accetta una risposta così marchiamo il thread come concluso


>per il resto, per il Byte non posso prevedere quanto sia lungo
>dato che serve per criptare una password...
ok allora lo inizializzi con il GetBytes() che quindi lo genra corretto in quel preciso momento


>per gli array per ora preferisco lasciarli cosi dato che una
>modifica sarebbe pesante e in questo momento non posso permettermelo
>dato che il progetto funziona bene ed ho poco tempo prima della
>presentazione....
ok

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ravalon Profilo | Expert

cioè come sarebbe lo inizializzi con il getbytes() ??? mi fai un esempio ? dopodichè per me siamo a posto....grazie
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