.NET 帮助

C# 初始化列表(如何为开发人员工作)

发布 2024年十月24日
分享:

列表是System.Collections.Generic这些名称空间是处理数据集合的多功能工具。 C# 中的列表是动态的,这意味着它们的大小可以在运行时改变。这种灵活性在许多不知道元素数量的软件工程场景中非常有用。 让我们深入了解在 C# 中初始化列表的不同方法。 我们将介绍基本技术、对象初始化器语法、集合初始化器和IronPDF 库.

基本列表初始化

要初始化一个列表,首先要创建一个 List 的实例类,其中 T 是列表中元素的类型。最常见的类型是字符串,但也可以使用任何类型。

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);
        }
    }
}
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
Friend Class Program
	Shared 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 fruit
	End Sub
End Class
VB   C#

在上面的示例中,我们创建了一个空列表,并使用 Add 方法添加了元素。 清单表示一个字符串列表,我们使用 Add 方法为其填充值。

使用集合初始化器语法

C# 提供了一种使用集合初始化器语法初始化列表的更简洁方式。 这样,您就可以在创建列表时直接填充列表,而无需重复调用添加方法。

public void InitializeList()
{
    List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" };
}
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
VB   C#

该代码实现了与上一示例相同的效果,但形式更加简洁。 集合初始化器允许您在一条语句中初始化一个包含值的列表,从而使您的代码更具可读性。

对象初始化器和列表初始化

对象初始化语法是初始化列表的另一种方法,主要是在处理自定义对象时使用。 下面举例说明对象初始化器如何使用列表:

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 }
};
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
	}
}
VB   C#

在本例中,我们使用对象初始化程序创建了一个 Person 对象列表。 Person 类有两个属性:姓名和年龄,这两个属性在创建列表时明确赋值。

创建具有初始大小的列表

虽然列表的大小是动态的,但如果您知道列表大约会容纳多少元素,就可以指定一个初始容量。 这可以减少内存重新分配的次数,从而提高性能。

List<string> fruits = new List<string>(10); // Initial size of 10
List<string> fruits = new List<string>(10); // Initial size of 10
Dim fruits As New List(Of String)(10) ' Initial size of 10
VB   C#

这将创建一个初始容量为 10 的空列表。虽然它不会添加元素,但它分配的内存足以容纳 10 个元素,而无需调整内部数组的大小。

从数组初始化列表

您还可以使用列表构造函数从现有数组初始化列表。论据。 当您有一个数组并希望将其转换为列表以提高灵活性时,这将非常有用。

// New String array of fruit
string[] fruitArray = { "Apple", "Banana", "Cherry" };
List<string> fruits = new List<string>(fruitArray);
// 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)
VB   C#

这里创建了一个新数组,然后用于初始化一个列表。这将 fruitArray 数组转换为列表。任何 IEnumerable包括数组在内的所有数据都可以传递给 list 构造函数进行初始化。

使用 AddRange 方法

如果您有一个现有的项目集合,您可以使用 AddRange 方法将多个元素添加到一个列表中。

List<string> fruits = new List<string> { "Apple", "Banana" };
string[] moreFruits = { "Cherry", "Date", "Elderberry" };
fruits.AddRange(moreFruits);
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)
VB   C#

在本例中,我们从包含两个元素的列表开始,使用 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 }
};
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
	}
}
VB   C#

该技术允许在单个语句中创建和初始化对象列表,使代码简洁易读。

使用扩展方法进行列表初始化

您还可以实现扩展方法,以自定义方式初始化列表。 扩展方法提供了一种机制,可以在不改变现有类型原始结构的情况下,用新功能改进现有类型。

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");
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");
Public Module ListExtensions
	<System.Runtime.CompilerServices.Extension> _
	Public Function InitializeWith(Of T)(ByVal list As List(Of T), ParamArray ByVal elements() As T) As List(Of T)
		list.AddRange(elements)
		Return list
	End Function
End Module
' Usage
Private fruits As List(Of String) = (New List(Of String)()).InitializeWith("Apple", "Banana", "Cherry")
VB   C#

在此,我们定义了一个扩展方法 InitializeWith,该方法用于向列表中添加元素并返回列表本身。 这样您就可以对列表进行连锁初始化和填充。

IronPDF: C# PDF 库

C# 初始化列表(如何为开发人员工作):图 1 - IronPDF:C# PDF 库

如果您有一个列表,如水果列表,您可以快速将其转化为HTML 表格并将其渲染为 PDFusingIronPDF这一切只需几行代码即可完成。 过程简单明了:初始化您的列表,将其转换为 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.");
    }
}
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
Friend Class Program
	Shared 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 fruit
		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 Class
VB   C#

C# 初始化列表(如何为开发人员工作):图 2 - 输出示例

这段代码初始化一个列表,从中创建一个 HTML 表格,然后使用 IronPdf 创建一个 PDF 文件。这是一种从数据集合生成 PDF 文件的简单而直接的方法。

结论

C# 初始化列表(如何为开发人员工作):图 3 - IronPDF 许可页面

C# 中的列表初始化是每个软件工程师都应掌握的基本概念。 无论您是处理简单的字符串列表还是复杂的对象列表,C# 都提供了多种方法来高效地初始化和填充列表。 从基本初始化到对象和集合初始化器,这些技术可以帮助您编写干净、简洁和可维护的代码。

IronPDF 提供一个免费试用您可以在不进行初始投资的情况下试用产品。 当您确信它能满足您的需求时,可获得 749 美元起的许可证。

< 前一页
C# 命名约定(如何为开发人员工作)
下一步 >
FileStream C#(面向开发人员的工作原理)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,622,374 查看许可证 >