Поделиться через


Предупреждение компилятора (уровень 1) CS3007

Обновлен: Ноябрь 2007

Сообщение об ошибке

Переопределенный метод "метод", отличающийся только типами массивов без имен, несовместим с CLS
Overloaded method 'method' differing only by unnamed array types is not CLS-compliant

Эта ошибка возникает, если имеется перегруженный метод, который принимает массив массивов, и единственное различие между подписями методов заключается в типе элементов массива. Чтобы избежать возникновения этой ошибки, рекомендуется выполнить следующие действия: использовать не массив массивов, а прямоугольный массив; использовать дополнительный параметр для устранения неоднозначности при вызове функции; переименовать один из перегруженных методов; удалить атрибут CLSCompliantAttribute (если совместимость со спецификацией CLS не требуется). Дополнительные сведения о совместимости со спецификацией CLS содержатся в разделах Написание CLS-совместимого кода и Спецификация CLS.

Пример

Следующий пример приводит к возникновению предупреждения CS3007:

// CS3007.cs
[assembly: System.CLSCompliant(true)]
public struct S
{
    public void F(int[][] array) { }
    public void F(byte[][] array) { }  // CS3007
    // Try this instead:
    // public void F1(int[][] array) {}
    // public void F2(byte[][] array) {}
    // or 
    // public void F(int[,] array) {}
    // public void F(byte[,] array) {}
}