Преобразуйте Список <T> для возражения []

Эту проблему можно решить, добавив логическую переменную IF Statement вместе с функцией DispatchQueue, чтобы предотвратить появление другой анимации до завершения текущей анимации.

См. Ниже и, пожалуйста, upvote, если это вообще помогло:)

import UIKit
var animation_active = false
let animation_duration = 2 //For easy maintenance

func swipe_down() {
    if animation_active == false {
        animation_active == true
        //Animation code goes here. Variable 'animation_active' should be used when performing the animation for easy matinence
        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(animation_duration), execute: {
            animation_active = false
        })
    }
}


func swipe_up() { //This is exactly the same as swipe_up. Yet it will prevent the swipe animation from occuring when the swipe down animation is occuruing thanks to the variable 'animation_active'
    if animation_active == false {
        animation_active == true
        //Animation code goes here. Variable 'animation_active' should be used when performing the animation for easy matinence
        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(animation_duration), execute: {
            animation_active = false
        })
    }
}
17
задан jv42 1 February 2012 в 14:46
поделиться

7 ответов

mylist.Cast<object>().ToArray()

Это будет повторяться только один раз, кстати, в случае Вы задавались вопросом о производительности. На). :)

Почему? Ну, потому что Cast будет использовать отложенное выполнение и на самом деле ничего не будет делать, пока список не будет повторен с помощью ToArray () .

61
ответ дан 30 November 2019 в 10:04
поделиться
List<T>.Select(x => x as object).ToArray();

Должен возвращать объект [] .

8
ответ дан 30 November 2019 в 10:04
поделиться

Если у вас нет Linq (.Net 3.0), вы можете использовать методы ConvertAll () и ToArray () в списке:

List<T> list = new List<T>();

object[] objects = list.ConvertAll<object>(item => (object)item).ToArray();
3
ответ дан 30 November 2019 в 10:04
поделиться
theList.Cast<object>().ToArray()

или

new List<object>(theList).ToArray()
2
ответ дан 30 November 2019 в 10:04
поделиться
И для решения до LINQ (которое работает только для ссылочных типов).
(object[])List<T>.ToArray();
2
ответ дан 30 November 2019 в 10:04
поделиться

Если вы не против написания очень короткой, многократно используемой функции, метод расширения ConvertAll может помочь:

http: //msdn.microsoft.com/en-us/library/73fe8cwf.aspx

EDIT:

This тоже сработает

List<int> intList = new List<int>() { 1, 3, 4 };
object[] objectList = intList.ConvertAll(item => (object)item).ToArray();
1
ответ дан 30 November 2019 в 10:04
поделиться

В C # на .NET 2.0 (VS 2008) следующие компилируются и не используют LINQ (насколько я вижу) для ссылочных типов.

 object[] oArray;
 List<MyObject> oList = new List<MyObject>();
 oArray = oList.ToArray();

Это не требует приведения поскольку все ссылочные типы имеют объект в качестве своей базы.

0
ответ дан 30 November 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: