Есть ли лучший способ получить первый элемент типа IEnumerable этого:
foreach (Image image in imgList)
{
picture.Width = (short)image.Columns;
picture.Height = (short)image.Rows;
break;
}
Это - точное объявление типа:
public class ImageList : IEnumerable, IDisposable
Хорошо, давайте предположим, что вы должны использовать кривые Безье, потому что вы используете библиотеку визуализации, которая имеет их в качестве примитива. Если вы абсолютно согласны с идеей использования управляющих точек на самой кривой, вы можете просто интерполировать управляющие точки, используя метод, описанный здесь: Как найти контрольные точки для 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();
Может быть немного неактуальным для вашей текущей ситуации, но есть также .Single ()
и .SingleOrDefault ()
, который возвращает первый элемент и выдает исключение, если есть не совсем один элемент в коллекции ( .Single ()
) или если в коллекции более одного элемента ( .SingleOrDefault ()
).
Это может быть очень полезно, если у вас есть логика, которая зависит от наличия только одного (или нуля) объектов в вашем списке. Хотя я подозреваю, что это не то, что вы хотели здесь.
Если вы не можете использовать LINQ, вы также можете получить перечислитель напрямую с помощью imgList.GetEnumerator ()
А затем выполните .MoveNext ()
, чтобы переместить к первому элементу.
.Current
тогда даст вам первый элемент.
Расширение .First()
будет захватывать первый элемент в перечислимой коллекции. Если коллекция пуста, будет выброшено исключение. .FirstOrDefault()
вернет значение по умолчанию для пустой коллекции (null для ссылочных типов). Выбирайте оружие с умом!