Share via


Instrucciones de uso de parámetros

En las reglas siguientes se describen las pautas de uso de parámetros:

  • Compruebe si los argumentos de los parámetros son válidos. Realice la validación de argumentos para cada método protegido o público y descriptor de accesos de la propiedad set. Inicie excepciones significativas para el programador en los argumentos de parámetros no válidos. Use la clase System.ArgumentException o una clase derivada de System.ArgumentException. En el siguiente ejemplo se comprueba si los argumentos de los parámetros son válidos y se inician excepciones significativas.

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

    Tenga en cuenta que la comprobación real no tiene que producirse necesariamente en los métodos public o protected. Se puede producir en un nivel inferior de rutinas privadas. La cuestión principal es que en todo el área de la superficie que se expone al programador se comprueba si los argumentos son válidos.

  • Asegúrese de comprender totalmente las implicaciones de pasar parámetros por valor o por referencia. Pasar un parámetro por valor copia el valor que se está pasando y no produce ningún efecto en el valor original. En el siguiente ejemplo de método se pasan parámetros por valor.

    public void Add(object value){}
    

    Pasar un parámetro por referencia pasa la ubicación de almacenamiento del valor. Como resultado, se pueden realizar cambios en el valor del parámetro. En el siguiente ejemplo de método se pasa un parámetro por referencia.

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

    Un parámetro de salida representa la misma ubicación de almacenamiento que la variable especificada como argumento en la invocación del método. Como resultado, sólo se pueden realizar cambios en el parámetro de salida. En el siguiente ejemplo de método se pasa un parámetro de salida.

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

Vea también

Instrucciones de diseño para programadores de bibliotecas de clases | Instrucciones de nomenclatura de parámetros | Instrucciones de uso de miembros de clases