#c# #arrays #.net-4.0
#c# #массивы #.net-4.0
Вопрос:
Я хочу создать простую оболочку массива с несколькими вспомогательными методами, однако я хочу, чтобы эта оболочка могла обрабатывать любой одномерный массив / операцию. Итак, я ищу базовый тип для приведения внутреннего массива.
Кто-нибудь может предложить тип?
Комментарии:
1. Возможно, я упускаю суть, но разве общие списки — это не одно и то же? Они обертывают одномерный массив, добавляют вспомогательные функции…
2. Разве вы не можете просто сделать его универсальным?
class MyArrayWrapper<T>
. msdn.microsoft.com/en-us/library/512aeb7t (VS.80).aspx
Ответ №1:
Вы можете использовать параметр универсального типа:
public class ArrayWrapper<T>
{
private T[] array;
}
List<T>
Класс инкапсулирует массив в общем виде и уже предоставляет ряд вспомогательных методов.
Ответ №2:
Почему не набор методов расширения?
public static class ArrayExtensions
{
public static void MyFoo<T>(this T[] sourceArray)
{
//...
}
}
Ответ №3:
Похоже, вы хотите, чтобы ваши вспомогательные методы были написаны как общие методы расширения:
public static Array Extensions
{
public void Foo<T>(this T[] bar)
{
//foo this bar
}
}
Поскольку это метод расширения, все массивы теперь будут иметь метод экземпляра для них, называемый foo:
int[] a = new int[] { 1, 2, 3 };
a.Foo();
Примечание. Перечитывая ваш вопрос после просмотра другого ответа, я вижу, что вы спрашивали о создании класса-оболочки. Если вы предпочитаете класс, другой ответ технически более правильный, но если вы просто создаете пару вспомогательных методов, то методы расширения являются гораздо лучшим решением проблемы.
Комментарии:
1. Да, методы расширений были бы хороши, но в данном случае это для решения действительно неясной проблемы, когда я должен замаскировать все обобщения. В любом случае, спасибо.
2. Из интереса, в чем неясная проблема?
3. Обновление старого приложения на FORTRAN для использования. Сетевые объекты для сбора данных, однако FORTRAN не может обрабатывать универсальные типы, поэтому мне нужно замаскировать их отсутствием универсальных типов.