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: 882
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: 1351
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: 2308
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: 1351
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: 6405
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: 6405
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: 1351
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