아래의 코드는 경고 CS3006 "ref 나 out 또는 배열 랭크가 다른 CLP와 호환되지 않는 메서드 오버로드 된 MyNamespace.Sample.MyMethod (int [])"를 생성합니다. "이 경우 CS3006 경고가 유효합니까?
이 경고는 유효합니까? 즉, 진정으로 CLS와 호환되지 않습니까? 명시 적 인터페이스 구현이 오버로드로 계산되지 않을 것이라고 생각했을 것입니다.
[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);
}
}
재미 있습니다. 나는 대답이 없다. 그러나 나는 알아 내려고 노력할 것이다 ... IMO, 그것은 오류가되어서는 안된다. –
BTW, .NET 4.0에서 시도해 보았습니다. 동일한 동작을합니다. –
"알아 내겠습니다"- 대단히 감사합니다. 이를위한 유즈 케이스는 .NET 클라이언트에 대한 참조 매개 변수없이 ComVisible 인터페이스 (배열 매개 변수가 ref이어야 함)를 갖는 것입니다. – Joe