Le code suivant est une méthode statique, Foo()
, à l'appel d'une méthode d'instance, Bar()
:
public sealed class Example
{
int count;
public static void Foo( dynamic x )
{
Bar(x);
}
void Bar( dynamic x )
{
count++;
}
}
Il se compile sans erreur* mais génère un runtime liant exception à l'exécution. Retrait de la dynamique paramètre de ces méthodes provoque une erreur de compilation, comme prévu.
Alors pourquoi le fait d'avoir un paramètre dynamique permettent le code à compiler? ReSharper n'apparaît pas comme une erreur.
Edit 1: *dans Visual Studio 2008
Edit 2: ajout sealed
puisqu'il est possible qu'une sous-classe peut contenir une statique Bar(...)
méthode. Même la version étanche compile quand il n'est pas possible que toute autre méthode que la méthode d'instance qui pourrait être appelé lors de l'exécution.