Я могу ошибаться, но мне кажется, что ваш массив IComparable [] является управляемым массивом? Если это так, то вы можете использовать этот код, чтобы получить длину
int arrayLength = myCollection.Length;
Если вы выполняете взаимодействие между платформами между C # и C ++, тогда ответ на заголовок вашего вопроса «Можно ли найти длину неуправляемого массива» - нет, это невозможно. Сигнатуры функций с массивами в C ++ / C имеют тенденцию следовать следующей схеме
void doSomeWorkOnArrayUnmanaged(int * myUnmanagedArray, int length)
{
// Do work ...
}
В .NET сам массив является типом, который имеет некоторую базовую информацию, такую как его размер, тип времени выполнения и т. Д. Поэтому мы можем использовать это
void DoSomeWorkOnManagedArray(int [] myManagedArray)
{
int length = myManagedArray.Length;
// Do work ...
}
Всякий раз, когда вы используете платформу для взаимодействия между C # и C ++, вам нужно будет передать длину массива в принимающую функцию, а также закрепить массив (но это другая тема).
Это отвечает на ваш вопрос? Если нет, то, пожалуйста, уточните