Как реализовать метод Array.ConvertAll в C # - PullRequest
0 голосов
/ 18 октября 2010

Я не могу преобразовать массив T TYPE в массив Int. Мой код указан ниже.

T [] arra = new T [arr.Length];

        int [] converted  = new int[arr.Length];
        T element;
        for (int i = 0; i < arr.Length; i++)
        {
            for (int j = 0; j < arr.Length - 1-i; j++)
            {
                Type s = (Type)System.Int64; 
                Type t = arr.GetType();
                Converter<T,int> a;
                if (t.Equals(s))
                {
                    Array.ConvertAll<T, int>(arr, Converter < T,int> converted);
                }

                if (arr[j] >  arr[j + 1])
                {               

                    element = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = element;
                }
            }
        }

Ответы [ 2 ]

1 голос
/ 18 октября 2010

Я совсем не ясно (из кода), что вы пытаетесь сделать, но приведу классический пример Array.ConvertAll (для сравнения):

string[] data = { "123", "456", "789" };
int[] ints = Array.ConvertAll(data, int.Parse);

Здесь выделяется int[] длины 3, затем (для каждой строки) int.Parse используется для преобразования строки в int; вывод должен быть int[] со значениями 123, 456, 789.

Более сложный пример (с использованием лямбда-синтаксиса):

string[] data = { "abc", "def", "ghi" };
string[] reversed = Array.ConvertAll(data, s => {
    char[] chars = s.ToCharArray();
    Array.Reverse(chars); // note; not fully i18n safe
    return new string(chars);
});

Здесь лямбда-тело (которое является нашим конвертером) переворачивает каждую строку (путем обращения символов); результат должен быть string[] со значениями "cba", "fed", "ihg".

1 голос
/ 18 октября 2010
    Array a = new Array();
    a.Cast<long>().ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...