Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887

    [C# 3.5] Parametri opzionali

    Come da titolo, come si rendono opzionali i parametri di un metodo in C# 3.5 ?

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    credo proprio che l'unica sia l'overload dei metodi.
    in mvc 1.0 (quando la versione di c# era appunto la 2008) tirarono fuori un attributo per questo ma era una cosa specifica per mvc.

  3. #3
    Sicuramente l'overload è una soluzione corretta.
    Nel caso in cui i parametri siano omogenei (con object anche no) ed hai la necessità di gestire una variazione in numero con un delta ampio, puoi utilizzare la parola chiave params.
    Di seguito un esempio di un metodo che utilizza params nella firma, e i possibili modi per sfruttarlo quando chiami il metodo

    codice:
    protected int Somma(params int[] valori)
    {
        foreach (int valore in valori)
            ...
    
       ...
    }
    codice:
    int x;
    x = Somma(1);
    x = Somma(1,2,3,4);
    
    int[] addendi = new int[] {1,2,3};
    x = Somma(addendi);

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    grazie ad entrambi. ero stato portato fuori pista dal fatto che nella versione 4.5 (VS 2012) a quanto pare sarà possibile:

    http://msdn.microsoft.com/it-it/library/dd264739.aspx

    Riporto il metodo con il secondo ed il terzo parametro opzionali:
    codice:
    // The first parameter, required, has no default value assigned
    // to it. Therefore, it is not optional. Both optionalstr and 
    // optionalint have default values assigned to them. They are optional.
    
    public void ExampleMethod(int required, string optionalstr = "default string", int optionalint = 10)
    {
      Console.WriteLine("{0}: {1}, {2}, and {3}.", _name, required, optionalstr, optionalint);
    }

  5. #5
    buono a sapersi......
    in verità in VS 2010, indipendentemente dal framework utlizzato , è già contemplato. (dipende dalla versione di C#)

    mi piacerebbe vedere il compilato a cosa corrisponde; sono pronto a scommettere che è equivalente (o quasi) ad un overload del metodo.........

    ma ora non ho tempo ......

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Li spulceremo fra un po' di mesi, ora applico l'overloading
    grazie

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.