Le code ci-dessous génère un avertissement CS3006 "Méthode surchargée MyNamespace.Sample.MyMethod (int []) 'différant uniquement par ref ou out, ou rang de tableau, n'est pas compatible CLS".L'avertissement CS3006 est-il valide dans ce cas?
Cet avertissement est-il valide, c'est-à-dire n'est-il pas conforme CLS? J'aurais pensé qu'une implémentation d'interface explicite ne compterait pas comme une surcharge.
[assembly: CLSCompliant(true)]
namespace MyNamespace
{
public class Sample : ISample
{
public void MyMethod(int[] array)
{
return;
}
void ISample.MyMethod(ref int[] array)
{
this.MyMethod(array);
}
}
public interface ISample
{
void MyMethod([In] ref int[] array);
}
}
C'est intéressant. Je n'ai pas de réponse, mais je vais essayer de trouver ... OMI, ça ne devrait pas être une erreur. –
BTW, je l'ai essayé dans. NET 4.0, et il se comporte de la même manière. –
"Je vais essayer de trouver" - merci beaucoup. Le cas d'utilisation pour cela est d'avoir une interface ComVisible (où les paramètres du tableau doivent être ref) sans avoir de paramètres ref pour les clients .NET. – Joe