Как получить первый элемент IEnumerable

Есть ли лучший способ получить первый элемент типа IEnumerable этого:

foreach (Image image in imgList)
{
     picture.Width = (short)image.Columns;
     picture.Height = (short)image.Rows;
     break;
}

Это - точное объявление типа:

public class ImageList : IEnumerable, IDisposable
17
задан Fitzchak Yitzchaki 23 February 2010 в 09:49
поделиться

4 ответа

Хорошо, давайте предположим, что вы должны использовать кривые Безье, потому что вы используете библиотеку визуализации, которая имеет их в качестве примитива. Если вы абсолютно согласны с идеей использования управляющих точек на самой кривой, вы можете просто интерполировать управляющие точки, используя метод, описанный здесь: Как найти контрольные точки для 4-точечной интерполяции БезерСегмента, заданного как Начало, Конец и 2 Точки Пересечения в C # - AKA Cubic Bezier

Другими словами, для каждого набора из 4 точек на кривой вы бы запустили приведенный выше алгоритм и получили 4 контрольные точки, необходимые для построения кубического Безье.

-121--4460127-

Выполните следующие действия:

int showLimit = 20;

/* Get all Tasks available (with limit set). */
ActivityManager mgr = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> allTasks = mgr.getRunningTasks(showLimit);
/* Loop through all tasks returned. */
for (ActivityManager.RunningTaskInfo aTask : allTasks) 
{                  
    Log.i("MyApp", "Task: " + aTask.baseActivity.getClassName()); 
    if (aTask.baseActivity.getClassName().equals("com.android.email.activity.MessageList")) 
        running=true;
}
-121--731745-
var firstImage = imgList.Cast<Image>().First();
31
ответ дан 30 November 2019 в 10:58
поделиться

Может быть немного неактуальным для вашей текущей ситуации, но есть также .Single () и .SingleOrDefault () , который возвращает первый элемент и выдает исключение, если есть не совсем один элемент в коллекции ( .Single () ) или если в коллекции более одного элемента ( .SingleOrDefault () ).

Это может быть очень полезно, если у вас есть логика, которая зависит от наличия только одного (или нуля) объектов в вашем списке. Хотя я подозреваю, что это не то, что вы хотели здесь.

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

Если вы не можете использовать LINQ, вы также можете получить перечислитель напрямую с помощью imgList.GetEnumerator () А затем выполните .MoveNext () , чтобы переместить к первому элементу. .Current тогда даст вам первый элемент.

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

Расширение .First() будет захватывать первый элемент в перечислимой коллекции. Если коллекция пуста, будет выброшено исключение. .FirstOrDefault() вернет значение по умолчанию для пустой коллекции (null для ссылочных типов). Выбирайте оружие с умом!

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

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