Corresponding parameters
For each argument in an argument list there has to be a corresponding parameter in the function member or delegate being invoked. The parameter list used in the following is determined as follows: · For virtual methods and indexers defined in classes, the parameter list is picked from the most specific declaration or override of the function member, starting with the static type of the receiver, and searching through its base classes. · For interface methods and indexers, the parameter list is picked form the most specific definition of the member, starting with the interface type and searching through the base interfaces. If no unique parameter list is found, a parameter list with inaccessible names and no optional parameters is constructed, so that invocations cannot use named parameters or omit optional arguments. · For partial methods, the parameter list of the defining partial method declaration is used. · For all other function members and delegates there is only a single parameter list, which is the one used. The position of an argument or parameter is defined as the number of arguments or parameters preceding it in the argument list or parameter list. The corresponding parameters for function member arguments are established as follows: · Arguments in the argument-list of instance constructors, methods, indexers and delegates: o A positional argument where a fixed parameter occurs at the same position in the parameter list corresponds to that parameter. o A positional argument of a function member with a parameter array invoked in its normal form corresponds to the parameter array, which must occur at the same position in the parameter list. o A positional argument of a function member with a parameter array invoked in its expanded form, where no fixed parameter occurs at the same position in the parameter list, corresponds to an element in the parameter array. o A named argument corresponds to the parameter of the same name in the parameter list. o For indexers, when invoking the set accessor, the expression specified as the right operand of the assignment operator corresponds to the implicit value parameter of the set accessor declaration. · For properties, when invoking the get accessor there are no arguments. When invoking the set accessor, the expression specified as the right operand of the assignment operator corresponds to the implicit value parameter of the set accessor declaration. · For user-defined unary operators (including conversions), the single operand corresponds to the single parameter of the operator declaration. · For user-defined binary operators, the left operand corresponds to the first parameter, and the right operand corresponds to the second parameter of the operator declaration.
|