Более короткий способ объявить и инициализировать список<ushort>
В настоящее время я объявляю и инициализирую список следующим образом:
List<ushort> myList = new List<ushort>() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
В конечном итоге у меня будет больше ushort
списки, которые будут содержать более 10 значений, и, например, неэффективно вводить каждое число от 1 до 100. В списке всегда будет диапазон номеров.
Есть более короткий способ написать это? Я пытался исследовать Enumerable.Range
, но это только обрабатывает int
значения, и я получаю ошибку "Не удается неявно преобразовать тип int в ushort".
4 ответа
Как насчет явного приведения?
List<ushort> myList = Enumerable.Range(1, 100).Select(i => (ushort)i).ToList();
и затем сделайте это действительно коротким!
var myList = Enumerable.Range(1, 100).Select(i => (ushort)i).ToList();
Вы можете попробовать использовать цикл, чтобы заполнить ваш список.
List<ushort> myList = new List<ushort>();
И тогда есть это в методе:
ushort count = 100; //or whatever number you need
for (ushort i = 1; i < count + 1; i++)
myList.Add(i);
Одним из преимуществ циклов, imo, является то, что если в будущем у вас есть список чего-то, например классов, вы можете легко создавать различные экземпляры классов в цикле и добавлять их в список.
List<ushort> values= Enumerable.Range(1, 100).Select(x => (ushort) x).ToList();
ВерсияEnumerable.Range
использование новых общих математических функций .NET 7 может быть:
public static class EnumerableEx
{
public static IEnumerable<T> Range<T>(T start, T count)
where T : INumber<T>
{
for (T i = start; i < count; i++)
yield return i;
}
}
Используется как
ushort[] range = EnumerableEx.Range<ushort>(0, 1000).ToArray();