Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580

    [C#] Override di una funzione con diverso valore di ritorno

    salve a tutti
    ho una funzione che restituisce un intero
    codice:
        private int GetValueCBB(ComboBox CBB)
            {
               int val = 0;
             return int;
         }
    ora mi serve esattamente la stessa funzione, solo che deve restituire una stringa, non voglio cambiare nome in quanto esplica esattamente quello che deve fare
    secondo la documentazione potrei fare un OVERRIDE e quindi far ritornare un tipo di dati diverso, ma da errore che già esiste la fuzione GetValueCBB

    cosa devo fare?
    ho già messo la parola chiave override, sbaglio qualcosa?

    codice:
        private override  string GetValueCBB(ComboBox CBB)
            {
                string val = "";
               return val;
       }
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Semplicemente non si può fare.
    Il tipo di ritorno NON FA PARTE della firma della funzione, quindi per il compilatore c'è una funzione dichiarata due volte.
    L'override si ha quando una classe riscrive una funzione con la stessa firma di una funzione presente nelle classi base.
    L'overload si ha quando si cambia la firma della funzione (mantenendo lo stesso nome e cambiando l'ordine dei parametri [se di tipo diverso] o il numero degli stessi).
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    Quote Originariamente inviata da Kahm Visualizza il messaggio
    salve a tutti
    ho una funzione che restituisce un intero
    codice:
        private int GetValueCBB(ComboBox CBB)
            {
               int val = 0;
             return int;
         }
    ora mi serve esattamente la stessa funzione, solo che deve restituire una stringa, non voglio cambiare nome in quanto esplica esattamente quello che deve fare
    secondo la documentazione potrei fare un OVERRIDE e quindi far ritornare un tipo di dati diverso, ma da errore che già esiste la fuzione GetValueCBB

    cosa devo fare?
    ho già messo la parola chiave override, sbaglio qualcosa?

    codice:
        private override  string GetValueCBB(ComboBox CBB)
            {
                string val = "";
               return val;
       }
    Ciao
    Mi sa che stai facendo un po di confusione... gli override si scrivono nella classe derivata e riguardano membri accessibili della classe base, quindi metodi (in c# le funzioni si chiamano metodi) non "private". Nel caso il tuo metodo sia privato (come da tuo esempio), la classe derivata non ha nessun accesso alla classe di base, per cui riscrivendo lo stesso con firma diversa non dovrebbe essere un problema e non dovrebbe essere necessario scrivere nessun override. Detto ciò forse tu ti riferisci alla stessa classe, quindi un overload, e per cambiare la firma devi necessariamente cambiare anche i parametri. Oppure possiamo parlare di tipo generico o di object, in questo caso un unico metodo che restituisce tipi diversi (quindi tipi T, oppure objects). In questo caso, ammesso che sia conveniente, bisognerebbe capire bene quali discriminanti vuoi usare.
    esempio :
    codice:
    private T GetValueCBB<T>(ComboBox  CBB)
         {
             if(typeof(T)==typeof(string))
                  return (T)(object)"Ciao";
             if(typeof(T)==typeof(int))
                  return (T)(object)0;
             return default(T);
         }
    
    
    
    
    ....
    Console.WriteLine(GetValueCBB<int>(CBB));
    Console.WriteLine(GetValueCBB<string>(CBB));
    Ultima modifica di U235; 11-07-2023 a 22:26

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    .

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.