Istruzioni per l'uso dei parametri

Le istruzioni per l'uso dei parametri sono definite dalle regole riportate di seguito.

  • Controllare gli argomenti di parametri validi. Eseguire la convalida degli argomenti per ciascun metodo public o protected e per la funzione di accesso set della proprietà. Attivare eccezioni significative per lo sviluppatore per gli argomenti di parametri non validi. Utilizzare la classe System.ArgumentException o una classe derivata da System.ArgumentException. Nell'esempio riportato di seguito vengono controllati gli argomenti di parametri validi e vengono generate eccezioni significative.

    Class SampleClass
       Private countValue As Integer
       Private maxValue As Integer = 100
    
       Public Property Count() As Integer      
          Get
             Return countValue
          End Get
          Set
             ' Check for valid parameter.
             If value < 0 Or value >= maxValue Then
                Throw New ArgumentOutOfRangeException("value", value, 
                   "Value is invalid.")
             End If
             countValue = value
          End Set
       End Property
       Public Sub SelectItem(start As Integer, [end] As Integer)
          ' Check for valid parameter.
          If start < 0 Then
             Throw New ArgumentOutOfRangeException("start", start, "Start 
                is invalid.")
          End If
          ' Check for valid parameter.
          If [end] < start Then
             Throw New ArgumentOutOfRangeException("end", [end], "End is 
                   invalid.")
          End If 
          ' Insert code to do other work here.
          Console.WriteLine("Starting at {0}", start)
          Console.WriteLine("Ending at {0}", [end])
       End Sub 
    End Class
    [C#]
    class SampleClass
    {
       public int Count
       {
          get
          {
             return count;
          }
          set
          {
                // Check for valid parameter.
                if (count < 0 || count >= MaxValue)
                   throw newArgumentOutOfRangeException(
                      Sys.GetString(
                         "InvalidArgument","value",count.ToString()));
          }
       }
    
       public void Select(int start, int end)
       {
          // Check for valid parameter.
          if (start < 0)
             throw new ArgumentException(
                   Sys.GetString("InvalidArgument","start",start.ToString()));
          // Check for valid parameter.
          if (end < start)
             throw new ArgumentException(
                   Sys.GetString("InvalidArgument","end",end.ToString()));
       }
    }
    

    Si noti che il controllo effettivo non deve essere necessariamente eseguito nel metodo public o protected stesso, ma può anche essere effettuato a un livello inferiore nelle routine private. Il punto principale è che la validità degli argomenti deve essere controllata nell'intera area della superficie esposta allo sviluppatore.

  • Valutare accuratamente le implicazioni connesse al passaggio di parametri per valore o per riferimento. Passando un parametro per valore, il valore viene copiato e l'operazione non influisce sul valore originale. Nell'esempio di metodo riportato di seguito, i parametri vengono passati per valore.

    public void Add(object value){}
    

    Passando un parametro per riferimento, viene passato il punto di archiviazione del valore. Di conseguenza, possono essere apportate modifiche al valore del parametro. Nell'esempio di metodo riportato di seguito viene passato un parametro per valore.

    public static int Exchange(ref int location, int value){}
    

    Un parametro di output rappresenta lo stesso percorso di archiviazione della variabile specificata come argomento nella chiamata di metodo. Di conseguenza, possono essere apportate modifiche solo al parametro di output. Nell'esempio di metodo riportato di seguito viene passato un parametro out.

    [DllImport("Kernel32.dll"]
    public static extern bool QueryPerformanceCounter(out long value)
    

Vedere anche

Istruzioni di progettazione per gli sviluppatori di librerie di classi | Convenzioni di denominazione per i parametri | Istruzioni per l'uso dei membri di classe