Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di hkproj
    Registrato dal
    Jul 2006
    Messaggi
    250

    [C#]Se la funzione non ritorna un valore in tutte le sue parti, solleva un eccezione

    Ciao, non so, ma quando programmavo in VB.NET, l'errore non veniva sollevato, ma mi dava solo un alert, invece in C# mi da un errore ogni volta che il return è un qualke pezzo di codice condizionale (es: una if o un try..catch..) perchè? come posso risolvere?
    --------------------HkProj------------------

  2. #2
    Utente di HTML.it L'avatar di hkproj
    Registrato dal
    Jul 2006
    Messaggi
    250
    ma possibile che nessuno di voi abbia mai avuto questo problema?!?!?!
    --------------------HkProj------------------

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non ho ben afferrato il problema ... proponi del codice d'esempio e discutilo ...

  4. #4
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    posta il codice cosi' posso dirti meglio
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  5. #5
    Utente di HTML.it L'avatar di hkproj
    Registrato dal
    Jul 2006
    Messaggi
    250
    allora ecco il codice:
    codice:
            //Restituisce l'hash sottoforma di bytes
            public Byte[] GetHashFromFile(string Filename)
            {
                try
                {
                    SHA1 SHA = System.Security.Cryptography.SHA1.Create();
                    FileStream Fs;
    
                    if (File.Exists(Filename) == false)
                    {
                        MessageBox.Show("Impossibile trovare il file specificato");
                        Application.Exit();
                    }
                    Fs = new FileStream(Filename, FileMode.Open);
                    return SHA.ComputeHash(Fs);
                    Fs.Close();
                }
                catch (IOException e)
                {
                    MessageBox.Show("Impossibile accedere al file, controllare di avere i permessi necessari");
                    Application.Exit();
                }
                catch (Exception e)
                {
                    MessageBox.Show("Errore non gestito");
                    Application.Exit();
                }
                Application.Exit();
                return null;
            }
    solo che se non metto quel return null; alla fine, mi da un errore dicendo che la routine non restituisce un valore di ritorno in tutte le sue parti...
    Ciao!
    --------------------HkProj------------------

  6. #6
    Non ci vedo nulla di male; una funzione deve sempre restituire un valore.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di hkproj
    Registrato dal
    Jul 2006
    Messaggi
    250
    ma se uno vuole restituire un valore solo per una certa condizione? come de fare?
    sì ma in vb.net questo problema non c'era e mi dava solo un alert
    --------------------HkProj------------------

  8. #8
    Ma scusa, una funzione restituisce sempre un valore! Semplicemente se in VB.NET lo ometti il compilatore assume che questo valore sia Nothing (per compatibilità con il metodo di restituzione di valori di VB6), mentre in C# devi restituire null esplicitamente. Continuo a non capire dove stia il problema.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it L'avatar di hkproj
    Registrato dal
    Jul 2006
    Messaggi
    250
    hai dato la risposta: Grazie, perkè non capivo come omettere il return null... grazie (ho appena cominxiato con il c#)
    --------------------HkProj------------------

  10. #10
    Tra parentesi, è buona norma restituire sempre qualcosa anche in VB.NET.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.