如何创建一个列表从一个长变量
本文关键字:一个 变量 long 何创建 列表 创建 | 更新日期: 2023-09-27 18:11:10
如何将长变量转换为列表?代码:
long taskId = long.Parse(LocalWorkListVM.ActiveTask.TaskId, CultureInfo.InvariantCulture);
我需要将其转换为List<long>
,因为我们的一个方法期望列表传递
所以你需要一个List<long>
,但你只有一个变量。这很简单,您可以使用集合初始化器语法:
List<long> longs = new List<long>{ taskId };
或更详细的List.Add
:
List<long> longs = new List<long>();
longs.Add( taskId );
试试这个:
List<long> somelist = new List<long>{long.Parse(LocalWorkListVM.ActiveTask.TaskId, CultureInfo.InvariantCulture)};
这将创建一个新的List
并使用解析后的值初始化它。
真的需要List
吗?如果有一种方法可以修改该方法以接受IEnumerable
,那么事情将变得更加容易和清晰(或者如果IEnumerable
还不够,也许可以考虑IList
)。
考虑到这一点,你有很多选择。
可以使用Enumerable
类的静态方法Repeat
:
Enumerable.Repeat(taskId, 1);
你可以写你自己的扩展方法:
static class IEnumerableExtensions
{
public static IEnumerable<T> ToEnumerable<T>(this T item)
{
yield return item;
}
}
// and use it as:
taskId.ToEnumerable()
当然,这个扩展方法可以修改为返回List
或IList
或任何你确切的需要。
同样,您可以创建一个新的函数重载,它期望一个long
而不是List
,在下面的行中:
public void MyMethod(List<long> list)
{
// Do something
}
public void MyMethod(long item)
{
MyMethod(new List<long>{ item });
}
最后,有一个很好的关键字params
:
public void MyMethod(params long[] items)
{
// call to the previously mentioned extension method
MyMethod(items.ToEnumerable());
}
public void MyMethod(IEnumerable<long> items)
{
// Do stuff
}
此解决方案的优点是可以使用单个long
参数,逗号分隔的long
参数或IEnumerable<long>
。