2017-10-13 49 views
-2

laisse supposer que nous avons 1 classe, qui implémente Interface1 et Interface2 (appelé I1 et I2)diference un objet, dans le constructeur ou une méthode comme argument

nous avons donc.

La classe A qui implémente I1 et I2

Maintenant, supposons que nous avons une classe B qui a 2 constructeurs:

Public B(I1 Argument); 

public B(I2 Argument); 

si nous:

A NewVarA = new A(); 
B NewVar = new B(A); 

qui constructeur sera appelé?

dans quel ordre le type de l'objet sera-t-il évalué?

+3

Pourquoi vous nous demandez, simplement le tester vous-même –

+0

peut-être que la balise C# vous fait manquer la question, je veux dire dire généralement, quel comportement peut-on attendre de ce type de code, y at-il toute pratique courante ou est simplement dépendant du langage du compilateur. –

Répondre

0

Le comportement est pas bien défini, ce qui explique pourquoi le compilateur C# se déclenche une erreur de compilation, il reconnaîtra que l'appel comme ambigu

Take a look here

`m assez sûr que la plupart des compilateurs attraperait que, Mais de toute façon ce n'est pas une pratique recommandée