Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908

    [C#]Chiarimento su costruttori di sottoclassi con parametri

    Ho questo codice:

    codice:
    using System; 
    using System.Drawing; 
    
    
    namespace CostruttoriSottoclassi 
    { 
    abstract class GenericCustomer 
    { 
    private string name; 
    public GenericCustomer(string name) 
    { 
    this.name = name; 
    } 
    } 
    class Nevermore60Customer : GenericCustomer 
    { 
    
    public Nevermore60Customer(string name) 
    : base(name) 
    { 
    
    } 
    } 
    
    public class Avvia 
    { 
    static void Main() 
    { 
    GenericCustomer customer = new Nevermore60Customer("Nome Cognome"); 
    if (customer != null) 
    Console.WriteLine("L'istanza di customer è vuota!"); 
    else 
    Console.WriteLine("L'istanza di customer è popolata!"); 
    } 
    } 
    }
    Ho da poco iniziato a studiare i costruttori di sottoclassi, quindi perdonatemi se chiedo cose stupide: ma comemai quando mando in esecuzione il codice non compare nulla sullo schermo?Dal momento che customer dovrebbe contenere "Nome Cognome", sullo schermo non dovrebbe esserci "L'istanza di customer è popolata!"?Scusate di nuovo in anticipo per l'eventuale stupidità della richiesta!
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma forse volevi scrivere

    if (customer == null)

  3. #3
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Come sempre, e anche per il futuro, grazie oregon!
    Ma allora != a cosa serve?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come "a che serve" ?

    != significa "diverso da"

    e

    == significa "uguale a"

    Se metti diverso da null significa che l'oggetto esiste!

  5. #5
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Ok oregon, quindi != non andava bene per il mio codice giusto?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... perche' se il riferimento all'oggetto e' "diverso da null", come avevi scritto, allora l'oggetto e' stato creato.

    Quindi, delle due una, o nella if hai sbagliato l'operatore di confronto o hai invertito le frasi ...

  7. #7
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Ok, tnk.
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  8. #8
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Ne approfitto di questo thread per un'altra richiesta e spero l'ulltima sull'argomento costruttori:

    codice:
    codice:using System;
    using System.Drawing;
    
    
    namespace CostruttoriSottoclassi
    {
        abstract class GenericCustomer
        {
            private string Name;
            public GenericCustomer(string Name)
            {
                this.Name = Name;
            }
        }
         class Nevermore60Customer : GenericCustomer 
    
        {
            public Nevermore60Customer(string Name)
                : base(Name)
            {
    
            }
                      
        }
        public class Avvia
        {
            static void Main()
            {
                GenericCustomer customer = new Nevermore60Customer("Nome Cognome");
                if (customer != null)
                    Console.WriteLine("L'oggetto è pieno");
            }
        }
    }
    Ora provo a commentarlo per vedere se ne ho capito il funzionamento e pregherei qualcuno di voi, che ne sa più di me, di confermarmi se ho capito e, nel caso contrario di correggermi.


    Iniziamo con il creare un namespace chiamato CostruttoriSottoclassi, e fin quì ok!
    Creiamo una classe astratta(ovvero una classa che non si può istanziare direttamente ma si può solo ereditare!), all'interno della quale creiamo un campo string privato chiamato Name; successivamente creiamo un costruttore per la classe in questione che, passandogli il parametro string Name. Inizializziamo il valore Name a null(giusto???). Creiamo un'altra classe chiamata Nevermore60Customer che eredita da GenericCustomer. All'interno della classe Nevermore60Customer creiamo un costruttore, passandogli, come parametro, string Name e affidandone, tramite il codice : base(Name) la gestione del parametro passato, alla classe base, dato che il campo name è privato e non è visibile alla classe sottostante, giusto?Alla fine, nel metodo main, istanziamo GenericCustomer, popolando l'oggetto con il valore "Nome Cognome"!
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

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.