Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    20

    [C#] Chiarimento sintassi vettori di oggetti

    Ciao a tutti ^_^
    Sono alle prese con un progetto di C# per un esame universitario... il corso ha lasciato un po' a desiderare e di programmazione a oggetti ci è stato insegnato ben poco, quindi mi ritrovo ora a dover progettare/implementare dovendo impararmi parecchie cose per conto mio....
    Speravo di trovare qui qualche buon'anima che avesse voglia di chiarire qualche mia confusione nel caso non riuscissi a risolverla da solo :/

    In particolare al momento non riesco a chirirmi questo dettaglio:


    string[] MyFamily = new string[10];

    crea un array di oggetti di tipo stringa

    e string è una classe.

    ora

    a) xkè fare:

    public Calciatore[] titolari = new Calciatore[11]; è sbagliato?

    o meglio..

    b) perchè
    public Calciatore[] titolari = new Calciatore()[11];
    non compila?

    c) se l'oggetto calciatore necessitasse di un parametro nel costruttore, come potrei fare per far sì che venga creato un vettore di oggetti calciatore?

    diciamo che il costruttore di Calciatore sia:
    public Calciatore(int parametro)
    {
    attributo = parametro
    }

    come dovrei fare per creare l'array di calciatori?

    grazie per l'aiuto ^_^

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    20
    aggiungo una cosa che mi è venuta in mente solo ora (non mi è possibile editare il primo post )

    "costruttori"

    dunque, da quel poco che mi è stato spiegato, un costruttore alloca in memoria lo spazio per contenere l'oggetto e i dati dei suoi attributi.

    ovvero:

    codice:
    class MyClass
    {
        private int id;
        public string nome;
      
      public MyClass()
      {
          // costruttore
      }
    }
    Ora, sempre se le mie info sono corrette, quando farò una "new" su MyClass verrà lanciato il costruttore, e verranno create in memoria una variabile di tipo "int" chiamata "id" e una variabile di tipo stringa chiamata "nome".

    Dico bene no?

    bene, il mio dubbio sorge con attributi della classe che sono "List"

    codice:
    class MyClass
    {
        private int id;
        public string nome;
        public List<AltraClasse> listaAltraClasse;
    
      
      public MyClass()
      {
          // costruttore
      }
    }
    e da quel che mi è stato insegnato il passo successivo per creare effettivamente la lista è:
    List<AltraClasse> listaAltraClasse = new list<AltraClasse>(numero_di_elementi)

    corretto?

    ora quel che vorrei capire è se questo comando lo devo effettivamente scrivere dentro il codice del costruttore, o se è fatto automaticamente!?!?
    a) se è fatto automaticamente come potrei io esplicitare quanto lo voglio grande?
    b) se NON è fatto esplicitamente, perchè per questo attributo ho dovuto fare la new mentre per gli altri 2 no?


    poi una piccola curiosità sulle "List"
    quando esplicito (numero_di_elementi) esplicito le "caselle di memoria" dentro le quali VERRANNO (futuro) inseriti dei dati, nella fattispecie degli oggetti di tipo "AltraClasse"
    quando faccio
    oggettolista.ADD(qualcosa) in pratica il metodo controlla se ci sono spazi liberi, se ci sono inserisce "qualcosa" nello spazio libero, altrimenti CREA un altro spazio e ci mette dentro "qualcosa"?
    Ma se è così, che senso ha specificare a priori la dimensione? tanto vale creare sempre "List" di dimensioni 0, e poi man mano che aggiungo gli elementi creo "le caselle" dove metterli, no?
    Anche xkè, lista.count dovrebbe restituire il numero di ELEMENTI al suo interno, non il numero di "caselle", dico bene?

    Mi rendo conto di avere abbastanza confusione su questi argomenti ma a mia discolpa potrei dire che non è tutta una carenza mia :P

    Grazie a chi mi vorrà aiutare ^_^

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    20
    up!
    help me pls

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    20
    up

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    20
    up...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    20
    ma c'è un motivo particolare per cui ci sono state 200 visite e neanche una risposta? -_-'

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459
    Originariamente inviato da Gap
    a) xkè fare:
    public Calciatore[] titolari = new Calciatore[11]; è sbagliato?
    Non è sbagliato, è giusto.

    Originariamente inviato da Gap
    o meglio..
    b) perchè
    public Calciatore[] titolari = new Calciatore()[11];
    non compila?
    Perché la sintassi è errata; quella del punto a) è corretta.

    Originariamente inviato da Gap
    c) se l'oggetto calciatore necessitasse di un parametro nel costruttore, come potrei fare per far sì che venga creato un vettore di oggetti calciatore?
    Tu hai allocato un array di riferimenti a oggetti di tipo Calciatore, ma tali riferimenti non sono stati impostati; devi creare tutte le istanze di cui hai bisogno e memorizzarne il riferimento all'interno degli elementi del tuo array.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459
    Originariamente inviato da Gap
    ora quel che vorrei capire è se questo comando lo devo effettivamente scrivere dentro il codice del costruttore, o se è fatto automaticamente!?!?
    Il codice va scritto nel costruttore oppure nella riga di definizione del campo.

    Originariamente inviato da Gap
    a) se è fatto automaticamente come potrei io esplicitare quanto lo voglio grande?
    In genere, a meno di ottimizzazioni di performance specifiche, non occorre indicare la dimensione della lista: questa si riempie man mano che vi aggiungi degli oggetti.
    Indicare una dimensione è utile solo nel contesto in cui è possibile prevedere grossomodo quanti oggetti conterrà la lista, per evitare di espanderla ad ogni inserimento quando già è noto che gli oggetti al suo interno saranno numerosi.

    Originariamente inviato da Gap
    b) se NON è fatto esplicitamente, perchè per questo attributo ho dovuto fare la new mentre per gli altri 2 no?
    Perché List è una classe...

    Originariamente inviato da Gap
    quando esplicito (numero_di_elementi) esplicito le "caselle di memoria" dentro le quali VERRANNO (futuro) inseriti dei dati, nella fattispecie degli oggetti di tipo "AltraClasse"
    quando faccio oggettolista.ADD(qualcosa) in pratica il metodo controlla se ci sono spazi liberi, se ci sono inserisce "qualcosa" nello spazio libero, altrimenti CREA un altro spazio e ci mette dentro "qualcosa"?
    Esatto.

    Originariamente inviato da Gap
    Ma se è così, che senso ha specificare a priori la dimensione? tanto vale creare sempre "List" di dimensioni 0, e poi man mano che aggiungo gli elementi creo "le caselle" dove metterli, no?
    Anche xkè, lista.count dovrebbe restituire il numero di ELEMENTI al suo interno, non il numero di "caselle", dico bene?
    Già spiegato prima.

    Originariamente inviato da Gap
    Mi rendo conto di avere abbastanza confusione su questi argomenti ma a mia discolpa potrei dire che non è tutta una carenza mia :P
    ...e di chi sarebbe?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459
    Originariamente inviato da Gap
    ma c'è un motivo particolare per cui ci sono state 200 visite e neanche una risposta? -_-'
    Sì: probabilmente la maggior parte delle visite sono tue, e sicuramente il fatto di aggiungere la proverbiale "carne al fuoco" non aiuta.

    Si dovrebbe affrontare un dubbio/problema per volta in ogni discussione... tienilo a mente per il futuro.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    20
    Originariamente inviato da alka

    ...e di chi sarebbe?
    direi di un corso universitario fatto con i piedi, in cui si spiega tutto "accennato" se uno vuole stare a quel che gli insegnano impara 1/10 delle cose necessarie per saper vagamente fare a programmare, e siccome il mio interesse è capirci qualcosa e non semplicemente passare un esame, mi tocca imparare le cose da solo o trovare una fonte di spiegazione (per l'appunto questo post).
    fermo restando che il mio intento è, palesemente, capirci qualcosa, se me lo avessero insegnato a lezione non sarei qui a scrivere post, non credi? ^_^

    Originariamente inviato da alka

    Sì: probabilmente la maggior parte delle visite sono tue, e sicuramente il fatto di aggiungere la proverbiale "carne al fuoco" non aiuta.

    Si dovrebbe affrontare un dubbio/problema per volta in ogni discussione... tienilo a mente per il futuro.

    Ciao!
    no, io ho fatto 1 visita al giorno, o meglio, una visita ogni volta che ho uppato, dal momento che mi vengono segnalati per posta i nuovi commenti


    cmq ti ringrazio per i chiarimenti ^_^ spero mi servano per chiarirmi un po' le idee

    ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.