C# 3.5 Opzionale e DefaultValue per i parametri

Sto usando C# .net 3.5 per la creazione di un’applicazione. Ho lavorato con il parametro opzionale attributi .net 4.0 senza problemi. Ho notato che con la 3.5 non c’è l’opzione (soluzione) per aggiungere i seguenti attributi del vostro metodo in questo modo:

    public static void MethodName(string name, [Optional][DefaultValue(null)]string placeHolder)
    {

    }

Anche se ho aggiunto gli attributi per il metodo, se provo a chiamare in questo modo:

     MethodName("test");

Il compilatore si lamenta che è alla ricerca di due parametri invece di uno. È possibile eseguire questa operazione utilizzando C# .net 3.5? Sto facendo qualcosa di sbagliato?

  • Stessa cosa accadrà con noi.Hai avuto qualche soluzione?
InformationsquelleAutor Deano | 2011-02-25

 

3 Replies
  1. 35

    Parametri opzionali sono C# 4.0 funzionalità del linguaggio, in modo da non importa quale sia il framework di destinazione, ma devi compilarlo con VS 2010 o più recente.

    Utilizzare questa sintassi in VS 2010 o più recente:

    public static void MethodName(string name, string placeHolder = null)
    {
        //body
    }

    Questo o nel precedente:

    public static void MethodName(string name, string placeHolder)
    {
        //body
    }
    
    public static void MethodName(string name)
    {
        MethodName(name, null);
    }
    • Sì, ho provato impostando il framework versione 3.5 in VS2010, ma ancora non si genera un errore di compilazione. “Argomenti Non Corrispondente”.
    • Stavo anche cercando un modo per fare questo senza dover fare la old skool modo – guarda come ho potuto!
    • Nelle proprietà del progetto andare a costruire la scheda avanzate e impostare il linguaggio di C# 4.0. Che dovrebbe funzionare anche quando .NET framework 3.5 è impostato.
    • Ho provato impostando il framework versione 4 & 3.5 in VS2010, ma ancora non si genera un errore di compilazione quando lo uso in VS2008. “Gli Argomenti Di”Non Corrispondenza
    • Potresti postare una riga in cui l’errore è?
    • E oh – che hai citato si utilizza in VS2008. Non può lavorare. Solo VS2010 possibile compilare C# 4.0 codice. Che è quello che ho scritto nella mia risposta.

  2. 6

    Il Optional attributo è disponibile dal C# 1.0, e viene utilizzato durante l’interazione con il codice esterno, non ha alcun effetto sulle chiamate di metodo nel proprio codice.

    Come non c’è opzionale parametri in C# 3, è possibile utilizzare l’overload invece:

    public static void MethodName(string name, string placeHolder) {
      ...
    }
    
    public static void MethodName(string name) {
      MethodName(name, null);
    }

    (Nota a margine: non C’è la versione C# 3.5, che è una versione di framework.)

  3. 4

    Dare un’occhiata al seguente StackOverflow thread:
    C# Opzionale Parametri .net 3.5

    Non copia incolla di tutto ciò che è stato detto lì, come il filo copre praticamente tutto.
    Buona fortuna.

    • Sì, l’ho fatto vedere che la questione – purtroppo ho provato impostando il framework versione 3.5 in VS2010, ma ancora non si genera un errore di compilazione. “Gli Argomenti Di”Non Corrispondenza

Lascia un commento