
C# 初始化列表(开发者用法)
列表是System.Collections.Generic命名空间的一部分,适用于处理数据集合。 C#中的列表是动态的,这意味着其大小可以在运行时更改。在许多软件工程场景中,这是非常有帮助的,其中元素数量事先未知。 让我们深入探讨在C#中初始化列表的不同方式。 我们将介绍基础技术、对象初始化语法、集合初始化器以及IronPDF库。
基本列表初始化
要初始化一个列表,首先需要创建一个string,但您可以使用任何类型。
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// Initialize an empty list
List<string> fruits = new List<string>();
// Adding elements to the list
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Cherry");
// Display the list
foreach (var fruit in fruits)
{
Console.WriteLine(fruit);
}
}
}Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
' Initialize an empty list
Dim fruits As New List(Of String)()
' Adding elements to the list
fruits.Add("Apple")
fruits.Add("Banana")
fruits.Add("Cherry")
' Display the list
For Each fruit In fruits
Console.WriteLine(fruit)
Next
End Sub
End Module在上面的例子中,我们创建了一个空列表并使用Add方法添加了元素。 Add方法来填充它的值。
使用集合初始化器语法
C#提供了一种更简洁的方法,可以使用集合初始化器语法初始化列表。 这允许您在列表创建时直接填充数据,而无需重复调用Add方法。
public void InitializeList()
{
List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" };
}Public Sub InitializeList()
Dim fruits As New List(Of String) From {"Apple", "Banana", "Cherry"}
End Sub这段代码实现了与前面的示例相同的结果,但形式更为简洁。 集合初始化器允许您在一个语句中用值初始化列表,提高了代码的可读性。
对象初始化器和列表初始化
对象初始化器语法是另一种初始化列表的方法,主要用于处理自定义对象。 这是对象初始化器如何与列表配合使用的示例:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
List<Person> people = new List<Person>
{
new Person { Name = "John", Age = 30 },
new Person { Name = "Jane", Age = 25 },
new Person { Name = "Jack", Age = 35 }
};Friend Class Person
Public Property Name() As String
Public Property Age() As Integer
End Class
Private people As New List(Of Person) From {
New Person With {
.Name = "John",
.Age = 30
},
New Person With {
.Name = "Jane",
.Age = 25
},
New Person With {
.Name = "Jack",
.Age = 35
}
}在此示例中,我们使用对象初始化器创建了Person对象的列表。 Age,它们在创建列表时被显式分配了值。
创建具有初始大小的列表
虽然列表的大小是动态的,但如果您大致知道列表将包含的元素数量,则可以指定初始容量。 这可以通过减少内存重新分配次数来提高性能。
List<string> fruits = new List<string>(10); // Initial size of 10Dim fruits As New List(Of String)(10) ' Initial size of 10这创建了一个初始容量为10的空列表。虽然没有添加元素,但已经分配了足够的内存以容纳最多10个元素而无需调整内部数组大小。
从数组初始化列表
您还可以使用接受IEnumerable<t>参数的列表构造函数从现有数组初始化列表。 当您有一个数组并希望将其转换为列表以获得灵活性时,这非常有用。
// New String array of fruit
string[] fruitArray = { "Apple", "Banana", "Cherry" };
List<string> fruits = new List<string>(fruitArray);' New String array of fruit
Dim fruitArray() As String = { "Apple", "Banana", "Cherry" }
Dim fruits As New List(Of String)(fruitArray)在这里,创建了一个新的数组,然后用于初始化列表。这将IEnumerable<t>,包括数组,都可以传递给列表构造函数进行初始化。
使用AddRange方法
如果您有一个现有的项目聚集,您可以使用AddRange方法一次性将多个元素添加到列表中。
List<string> fruits = new List<string> { "Apple", "Banana" };
string[] moreFruits = { "Cherry", "Date", "Elderberry" };
fruits.AddRange(moreFruits);Dim fruits As New List(Of String) From {"Apple", "Banana"}
Dim moreFruits() As String = { "Cherry", "Date", "Elderberry" }
fruits.AddRange(moreFruits)在此示例中,我们从包含两个元素的列表开始,然后使用AddRange从数组中添加多个新项目。 这种方法可以通过批量添加元素而提高性能,因为它减少了多次重新分配的需要。
用自定义对象初始化列表
在初始化自定义对象的列表时,可以将对象初始化器与集合初始化器结合使用,在一个表达式中创建复杂的数据结构。
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 28 },
new Person { Name = "Bob", Age = 32 },
new Person { Name = "Charlie", Age = 40 }
};Dim people As New List(Of Person) From {
New Person With {
.Name = "Alice",
.Age = 28
},
New Person With {
.Name = "Bob",
.Age = 32
},
New Person With {
.Name = "Charlie",
.Age = 40
}
}这种技术允许在一个语句中创建和初始化对象列表,使代码简洁且易于阅读。
使用扩展方法初始化列表
您还可以实现扩展方法,以自定义方式初始化列表。 扩展方法提供了一种机制,可以在不改变原结构的情况下为现有类型增加新功能。
public static class ListExtensions
{
public static List<t> InitializeWith<t>(this List<t> list, params T[] elements)
{
list.AddRange(elements);
return list;
}
}
// Usage
List<string> fruits = new List<string>().InitializeWith("Apple", "Banana", "Cherry");Imports System.Collections.Generic
Public Module ListExtensions
<System.Runtime.CompilerServices.Extension>
Public Function InitializeWith(Of T)(list As List(Of T), ParamArray elements As T()) As List(Of T)
list.AddRange(elements)
Return list
End Function
End Module
' Usage
Dim fruits As List(Of String) = New List(Of String)().InitializeWith("Apple", "Banana", "Cherry")在这里,我们定义了一个扩展方法InitializeWith,该方法向列表添加元素并返回列表本身。 这允许您链式调用列表的初始化和填充。
IronPDF:C# PDF库

如果您有一个列表,比如一个水果列表,您可以快速将其转换为HTML表格并将其呈现为PDF,使用IronPDF,全部只需几行代码。 过程很简便:初始化您的列表,转换为HTML,然后让IronPDF生成PDF。 以下是一个例子:
using IronPdf;
using System;
using System.Collections.Generic;
using System.Text;
class Program
{
static void Main()
{
// Initialize a list of strings representing data
List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" };
// Convert the list to an HTML table
StringBuilder htmlContent = new StringBuilder();
htmlContent.Append("<table border='1'><tr><th>Fruit Name</th></tr>");
foreach (var fruit in fruits)
{
htmlContent.Append($"<tr><td>{fruit}</td></tr>");
}
htmlContent.Append("</table>");
// Render the HTML to PDF using IronPDF
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
// Save the PDF to a file
PDF.SaveAs("FruitsList.pdf");
Console.WriteLine("PDF generated successfully.");
}
}Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.Text
Module Program
Sub Main()
' Initialize a list of strings representing data
Dim fruits As New List(Of String) From {"Apple", "Banana", "Cherry"}
' Convert the list to an HTML table
Dim htmlContent As New StringBuilder()
htmlContent.Append("<table border='1'><tr><th>Fruit Name</th></tr>")
For Each fruit In fruits
htmlContent.Append($"<tr><td>{fruit}</td></tr>")
Next
htmlContent.Append("</table>")
' Render the HTML to PDF using IronPDF
Dim Renderer = New ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString())
' Save the PDF to a file
PDF.SaveAs("FruitsList.pdf")
Console.WriteLine("PDF generated successfully.")
End Sub
End Module
此代码初始化列表,从中创建HTML表格,并使用IronPDF创建PDF文件。 这是一种从数据集合生成PDF的简单直接的方法。
结论
在C#中,列表初始化是每个软件工程师都应掌握的基本概念。 无论您是在处理简单的字符串列表还是复杂的对象列表,C#提供了几种方法可以有效地初始化和填充列表。 从基础初始化到对象和集合初始化器,这些技术帮助您编写简洁、清晰和可维护的代码。
IronPDF提供免费试用,让您无需初始投资即可试用产品。 当您确信它满足您的需求时,可以以$999起购买许可证。

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。
相关文章


