我们可以创建一张表:
List<MyClass> LC = new List<MyClass>();
我的班级是:
private class MyClass
{
public string A { get; set; };
public string B { get; set; };
public string C { get; set; };
}
通常我们像这样进行补课
for (int i = 0; i < 300; i++)
{
var tmp = new MyClass()
{
A = "ABC",
C = "DIG",
}
LC.Add(tmp);
}
是否有可能在知道工作表中的类数并知道类“ABC”和“DIG”的常量元素后,立即创建所需数量的填充类?
那些。删除多个通话Add()?
这是这里的一个例子
或与您的主题有关。
List<MyClass> LC = MyClass.RepeatCreate(300, MyClass.Get_Template_A_ABC_C_DIG);您要删除多个呼叫
Add。这是有原因的,因为当列表的容量(Capacity)不够时,列表的内存会被重新分配,数据会被复制到一个新的内存区域。为避免这种情况,您需要创建一个具有所需容量的列表:现在方法调用
Add总是具有 O(1) 复杂度。您可以将初始化程序分配给属性:
现在代码将如下所示:
但是请注意,现在这些属性在创建时将始终具有默认值,除非它们被显式更改。
也许结构而不是类更适合您(通常,结构几乎总是更适合存储数据):
然后代码及其应用程序将如下所示:
我们创建一个填充了属性的结构实例。接下来,我们添加这个实例——因为这是一个值类型,所以会创建副本。
如果出于某种原因甚至创建具有给定容量的列表不适合您并且您想通过各种方式摆脱该方法
Add,那么我建议使用数组。瞧!我们不是添加到列表中,而是使用索引分配元素。
数组可以与类和结构一起使用。
最后,我注意到使用 LINQ:
Enumerable.Range. ... .ToList()并没有消除向列表中添加元素的需要。只是它不是很明显可见,而是发生在里面。而且,这种方法的性能更差。