Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Aggiungere un campo a una Array
Forum - C# / VB.NET - Aggiungere un campo a una Array - Pagina 2

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 20:48
Giovedì, 17/05/2018
Testo quotato

Postato originariamente da Carlo:

Testo quotato

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

  1. Dim arr As String() = {"Carlo", "Rossi", "Roma"}
  2.  
  3.         System.Array.Resize(arr, arr.Length + 1)
  4.         arr(3) = "Firenze"
  5.  
  6.         Console.WriteLine(arr(3))




Codice sorgente - presumibilmente C# / VB.NET

  1. string[] arr = new string[] { "Carlo", "Rossi", "Roma" };
  2.  
  3.             System.Array.Resize(ref arr, arr.Length + 1);
  4.             arr[3] = "Firenze";
  5.  
  6.             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.:k:

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

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1316
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 21:18
Giovedì, 17/05/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...:asd:

Ultima modifica effettuata da Carlo il 17/05/2018 alle 21:22


in programmazione tutto è permesso
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 21:26
Giovedì, 17/05/2018
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

  1. string[] array = new string[3];
  2.  
  3.  
  4. array.Resize<string>(ref array,array.lenght +1);




https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1316
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 21:49
Giovedì, 17/05/2018
Testo quotato

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

  1. string[] array = new string[3];
  2.  
  3.  
  4. array.Resize<string>(ref array,array.lenght +1);




:k::k::k::k: ora è semplice


in programmazione tutto è permesso
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:49
Venerdì, 18/05/2018
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.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
torn24 (Normal User)
Pro


Messaggi: 156
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 10:51
Venerdì, 18/05/2018
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 ?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:42
Venerdì, 18/05/2018
È 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 nessuno il 18/05/2018 alle 12:50


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1316
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 13:47
Venerdì, 18/05/2018
Testo quotato

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, :asd:HooooPs:asd: è 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
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo