Ultimo (Member)
Guru
Messaggi: 931
Iscritto: 22/05/2010
|
Postato originariamente da Carlo:
Postato originariamente da nessuno:
Redim (Preserve) è uno statement inefficiente e obsoleto, che proviene dal VB precedente e che funziona solo grazie al riferimento allo spazio dei nomi Microsoft.VisualBasic (che dovrebbe essere eliminato da tutti i progetti VB.NET per evitare l'uso di statement/funzioni obsolete).
Sia in VB.NET che in C#, per un array a una sola dimensione, si usa la classe Array
https://msdn.microsoft.com/it-it/library/system.array(v=vs. ...
e si scrive qualcosa del genere
Codice sorgente - presumibilmente C# / VB.NET |
Dim arr As String() = {"Carlo", "Rossi", "Roma"}
System.Array.Resize(arr, arr.Length + 1)
arr(3) = "Firenze"
Console.WriteLine(arr(3))
|
Codice sorgente - presumibilmente C# / VB.NET |
string[] arr = new string[] { "Carlo", "Rossi", "Roma" };
System.Array.Resize(ref arr, arr.Length + 1);
arr[3] = "Firenze";
Console.WriteLine(arr[3]);
|
In realtà, con .NET è preferibile usare un ArrayList o un Generics |
In VB .Net Array.Resize mi funzionava alla grande, ma in C# no e ora grazie a nessuno so anche il perché.
In: https://msdn.microsoft.com/it-it/library/bb348051(v=vs.110) ...
il "ref" non c'è, invece è indispensabile, dagli aiuti lo avevo notato, e avevo provato varie combinazioni, tutte sbagliate!!
Ho adottato il mio motto "in programmazione tutto è permesso", scrivendo il codice che ho postato prima, ora inutile.
EDIT: il mio codice funziona anche con le matrici multidimensionali, invece come si dovrebbe fare?
|
Carlo il C# non accetta dichiarazioni implicite, a differenza del VB.NET, per questo il "ref" deve essere inserito
esplicitamente.
If ok Then GOTO Avanza else GOTO Inizia
|
|
Carlo (Member)
Guru^2
Messaggi: 1420
Iscritto: 29/01/2018
|
@ Ultimo
Grazie, credo di aver capito l'errore che ho fatto, quando ho letto le MSDN ho letto per il C#, ma poi nell'esempio non ho cambiato da VB a C#.
L'aiuto di VS mi ha avvertito che un parametro non era corretto, e mi ha proposto Array.Resize <T> (ref T[] array, int newSize)
Ho provato varie configurazioni tutte sbagliate, 1 es (sbagliato): Array.Resize string (ref string[] MioArray, MioArray.Length +1)
Che tonto...
Ultima modifica effettuata da Carlo il 17/05/2018 alle 21:22
in programmazione tutto è permesso |
|
Thejuster (Admin)
Guru^2
Messaggi: 2338
Iscritto: 04/05/2008
|
esatto.
il termine T è identificato come generico.
quindi va bene anche una variabile di tipo dinamica come var.
chiede esplicitamente un riferimento ad un tipo.
proprio come hai scritto
Array.Resize <Tipo> (ref Tipo[] array, int newSize)
Codice sorgente - presumibilmente C# / VB.NET |
string[] array = new string[3];
array.Resize<string>(ref array,array.lenght +1);
|
|
|
Carlo (Member)
Guru^2
Messaggi: 1420
Iscritto: 29/01/2018
|
Postato originariamente da Thejuster:
esatto.
il termine T è identificato come generico.
quindi va bene anche una variabile di tipo dinamica come var.
chiede esplicitamente un riferimento ad un tipo.
proprio come hai scritto
Array.Resize <Tipo> (ref Tipo[] array, int newSize)
Codice sorgente - presumibilmente C# / VB.NET |
string[] array = new string[3];
array.Resize<string>(ref array,array.lenght +1);
|
|
in programmazione tutto è permesso |
|
()
Newbie
Messaggi:
Iscritto:
|
La questione è che non dovresti usare Array ma classi (Generics) per cui non ti devi interessare di "allocare"/"deallocare" elementi.
Continui a ragionare come si faceva 20 anni fa e come se non stessi utilizzando strumenti e linguaggi fortemente OOP.
|
|
torn24 (Normal User)
Pro
Messaggi: 156
Iscritto: 04/01/2008
|
thread interessante, leggendo i post di nessuno imparo sempre qualcosa di nuovo
Però il fatto che voglia salvare, nome, cognome e indirizzo, mi fa pensare che forse avrebbe dovuto crearsi una classe e poi usare una list, non so per quale motivo ha necessità di usare array ?
|
|
()
Newbie
Messaggi:
Iscritto:
|
È così torn, dovrebbe usare List e classi e affidarsi al garbage collector di .net.
Lui lavora con array perché purtroppo è legato a vecchi concetti. Già con vb6 si poteva fare di meglio
Ultima modifica effettuata da il 18/05/2018 alle 12:50 |
|
Carlo (Member)
Guru^2
Messaggi: 1420
Iscritto: 29/01/2018
|
Postato originariamente da nessuno:
La questione è che non dovresti usare Array ma classi (Generics) per cui non ti devi interessare di "allocare"/"deallocare" elementi.
Continui a ragionare come si faceva 20 anni fa e come se non stessi utilizzando strumenti e linguaggi fortemente OOP. |
Sto studiando, non è facile cambiare, spero che anche Fosforo ci metta un po' di impegno.
Vengo da un periodo dove le informazioni erano irreperibili, e anche i libri non era facile trovarli.
Sono abituato a risolvere con quello che conosco, HooooPs è tutto da studiare.
Devo ringraziare tutti i partecipanti del sito, perché altrimenti non avrei mai tentato di cambiare. Ultima modifica effettuata da Carlo il 18/05/2018 alle 13:51
in programmazione tutto è permesso |
|