Richtlinien für die Verwendung von Parametern

Die folgenden Regeln dienen als Richtlinie für die Verwendung von Parametern:

  • Untersuchen Sie den Code auf gültige Parameterargumente. Führen Sie eine Argumentvalidierung für jede public- oder protected-Methode und jeden set-Eigenschaftsaccessor aus. Lösen Sie für ungültige Parameterargumente sinnvolle Ausnahmen für den Entwickler aus. Verwenden Sie die System.ArgumentException-Klasse oder eine von System.ArgumentException abgeleitete Klasse. Im folgenden Beispiel wird nach gültigen Parameterargumenten gesucht, und sinnvolle Ausnahmen werden ausgelöst.

    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()));
       }
    }
    

    Beachten Sie, dass die eigentliche Überprüfung nicht unbedingt in der public- oder protected-Methode selbst erfolgen muss. Sie könnte auch auf einer tieferen Ebene in privaten Routinen stattfinden. Es kommt darauf an, dass der gesamte Oberflächenbereich, der dem Entwickler offengelegt wird, nach gültigen Argumenten durchsucht wird.

  • Stellen Sie sicher, dass Sie die Auswirkungen der Übergabe von Parametern als Wert oder Verweis vollständig nachvollziehen können. Durch die Übergabe eines Parameters als Wert wird der übergebene Wert kopiert. Dies hat keine Auswirkungen auf den ursprünglichen Wert. Im folgenden Methodenbeispiel werden Parameter als Wert übergeben.

    public void Add(object value){}
    

    Bei der Übergabe von Parametern als Verweis wird der Speicherort für den Wert übergeben. Daher können Änderungen am Wert des Parameters vorgenommen werden. Im folgenden Methodenbeispiel wird ein Parameter als Wert übergeben.

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

    Ein Ausgabeparameter stellt denselben Speicherort dar wie die im Methodenaufruf als Argument angegebene Variable. Daher können Änderungen nur am Ausgabeparameter vorgenommen werden. Im folgenden Methodenbeispiel wird ein out-Parameter übergeben.

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

Siehe auch

Entwurfsrichtlinien für die Entwicklung von Klassenbibliotheken | Richtlinien für die Benennung von Parametern | Richtlinien für die Verwendung von Klassenmembern