假设我有一个简单的List<bool>
。我想要初始化并添加100个元素。要实现这一点,我可以这样做:
var myList = new List<bool>();
for (int i = 0; i < 100; i++)
{
myList.Add(false);
}
但这不是最优雅的方法。是否有任何内置方法来简化它?我不想使用任何循环,只是出于好奇。
false
很容易,因为它是布尔类型的默认值:
new List<bool>(new bool[100]);
List<T>
没有特定的方法来实现这个。循环是您最好的选择。
但是,在运行时,您可以通过使用初始容量初始化列表来使其更有效:
var myList = new List<bool>(100);
public static void Initialize<T>(this List<T> list, T value, int count)
{
if (list == null)
{
throw new ArgumentNullException("list");
}
if (list.Count != 0)
{
throw new InvalidOperationException("list already initialized");
}
if (list.Capacity < count)
{
list.Capacity = count;
}
for (int i = 0, i < count, i++)
{
list.Add(value);
}
}
var myList = new List<bool>();
myList.Initialize(false, 100);
var myList = new bool[100];
这个例子有趣的地方在于,你不需要初始化数组。由于 bool
的默认值为 false
,因此数组中的所有元素都会自动拥有 false
值。如果你的列表不需要动态调整大小,那么这绝对是可以考虑的选项。
您可以使用 List.AddRange:
List<bool> list = new List<bool>();
list.AddRange(Enumerable.Repeat(default(bool), 100));
AddRange
是流畅的... - Jodrell
List<bool>
。 - CodingIntrigue