Linguaggio C#

Yes. . .

bisogna attivare opzione/componente in preferenze

… Quindi puoi fare il test con ArrayList e List tu stesso. :grinning:

Su su… @0904 forza Salvio facci vedere :grin:

… Beh, ovviamente se ti interessa e col nostro aiuto, dopo aver imparato con calma cosa sono 'tutte ‘ste liste’ e come si usano … :wink: :slight_smile:

ma non eri tu che volevi provare il tempo di calcolo tra le due soluzioni :wink:

edit:
personalmente sto seguendo la spiegazione ma ancora non ho afferrato bene il concetto spiegato
in pratica dovresti realizzare un Array che contiene due elementi (un valore e una chiave)?

Eccolo qui, il primo codice compilato che:

  1. crea un tipo composto da due classi;
  2. chiede di inserire una coppia di valori da tastiera, uno stringa e uno intero;
  3. stampa a video la lista;
  4. mostra il tempo di esecuzione.
1 Mi Piace

:+1:

questa non lo capita. . .

cosa si intende con crea “un tipo” composto da due classi?

due classi, una richiede un valore stringa e l’altra classe richiede un valore intero
e quindi c’é una terza classe che include entrambi i valori in una lista? o cosa. . .

se apri il file program.cs ho commentato tutto per te.

PS. Non c’è bisogno di aprirlo con VS, basta seguire il link.

ok lo leggero con calma appena posso :+1:

fatto Sergio. :wink:

1 Mi Piace

Creare una classe significa creare un nuovo tipo di oggetto.

GH non è nato a caso: è una rappresentazione visiva di ciò è C#: oggetti collegati tra loro, ma col vantaggio di non dover imparare a programmare per mettere su cose interessanti.

Un oggetto non ancora sul canvass è come una classe non ancora istanziata, ha una sua struttura ancora non reale, potenziale, cioè non non costruita e assegnata in memoria.
Appena metti su canvass un oggetto lo hai istanziato in memoria.

Strumento eccezionale, ma se si riesce ad avere anche padronanza del linguaggio si ha maggiore libertà di personalizzazione ed efficienza.

Per la verità non ci ho capito molto. In sostanza in alternativa all’ArrayList usi una List
dove passerai come Tipo una classe che ti consente di gestire più tipi di oggetto? Se così
non è più semplice un codice del tipo:

using System;
using System.Collections.Generic;

class HelloWorld {

public class cA{}

public class cB: cA {}

  static void Main() {
    Console.WriteLine("Hello World");
    int a =5;
    double b = 5.4;
    cA vcA = new cA();
    cB vcB = new cB();
    List<object> LL = new List<object>();
    LL.Add(a);
    LL.Add(b);
    LL.Add(vcA);
    LL.Add(vcB);
    Console.WriteLine("*************************************************");
    Console.WriteLine("Verifica il tipo di oggetto per singola variabile");
    Console.WriteLine("*************************************************");
    Console.WriteLine("l'oggetto a è un {0}", a.GetType());
    Console.WriteLine("l'oggetto b è un {0}", b.GetType());
    Console.WriteLine("l'oggetto vcA è un {0}", vcA.GetType());
    Console.WriteLine("l'oggetto vcB è un {0}", vcB.GetType());
    Console.WriteLine("*************************************************");
    Console.WriteLine("Verifica il tipo di oggetto contenuto nella lista");
    Console.WriteLine("*************************************************");
    for (int i=0; i<4;i++){
    Console.WriteLine("L'oggetto memorizzato in L[{0}] è un {1}",i,LL[i].GetType());
    }
  }
}

che di fatto è una ArrayList.
In termini di prestazioni non cambia nulla. (Probabilmente il ns codice è meno performante!).

1 Mi Piace

:melting_face:
Potevo usare il tipo object che include tutti i tipo derivati… :person_facepalming:t2:
Mi è servito come esercizio per imparare altre cose perlomeno :crazy_face: quantomeno la logica.

Comunque ho capito @Emilio cosa voleva dirmi qui:

e con Sergio abbiamo visto che anche una lista può accettare tipi diversi.

Abbiamo imparato che sia List che ArrayList possono gestire tipi differenti se il primo è dichiarato come object.
Il primo è dinamico e più comodo, ma non essendo indicizzato è “più lento”.

Scusa una domanda, Luca. :slight_smile:
In che senso List non e’ indicizzato ?

Che il numero di campi non è definito.

Ps Auguroni Emilio

1 Mi Piace

@luca.filippone
Grazie ! :slight_smile:

1 Mi Piace

Leggo adesso l edit.

Una collezione di dati composta da una coppia di attribuiti (Chiave - Valore) è un tipo già esistente, nativo di C#, che si chiama Dizionario.

Col mio esercizio volevo vedere se riuscivo a creare una lista di una classe che ne contenesse altre.

1 Mi Piace

Qualcuno ha usato le librerie Eto.Forms?
Sapete se si può usare Windows Forms ad esempio ( al posto di Eto) ?

Sembra di si’ …
Cercando sul forum si trovano diverse discussioni a proposito.
Ad esempio:

Ovviamente si parla anche di Eto.
Come guida, la trovo solo per Python:

… ma non sono bravo a cercare nella documentazione McNeel … :blush:

1 Mi Piace