List
- 类型: 泛型类
- 命名空间:
System.Collections.Generic
- 作用:
List<T>
表示一个强类型的对象列表,可以通过索引访问。提供了搜索、排序和操作列表的方法。 - 特点: 类型安全,性能较好,适用于需要强类型和高效操作的场景。
- 例子:
List<int> numbers = new List<int>(); numbers.Add(1); numbers.Add(2); numbers.Add(3);
IList
- 类型: 接口
- 命名空间:
System.Collections.Generic
- 作用:
IList<T>
表示可以通过索引单独访问的对象集合。它是所有泛型列表的基础接口。 - 特点: 提供了抽象层,可以用于更灵活和可扩展的实现。
- 例子:
IList<int> numbers = new List<int>(); numbers.Add(1); numbers.Add(2); numbers.Add(3);
ArrayList
- 类型: 非泛型类
- 命名空间:
System.Collections
- 作用:
ArrayList
表示一个可以通过索引单独访问的对象集合。与List<T>
不同,它不是类型安全的,可以存储任何类型的对象。 - 特点: 灵活但不类型安全,适用于需要存储多种类型对象的场景。
- 例子:
ArrayList numbers = new ArrayList(); numbers.Add(1); numbers.Add("two"); numbers.Add(3.0);
Dictionary
- 类型: 泛型类
- 命名空间:
System.Collections.Generic
- 作用:
Dictionary<TKey, TValue>
表示一个键值对的集合。每个键必须是唯一的,提供了根据键快速查找值的功能。 - 特点: 类型安全,查找速度快,适用于需要键值对存储的场景。
- 例子:
Dictionary<string, int> ages = new Dictionary<string, int>(); ages.Add("Alice", 30); ages.Add("Bob", 25); ages.Add("Charlie", 35);
在WPF中的实例
假设我们在WPF应用中使用这些集合来显示数据,可以创建一个简单的WPF应用来展示这些集合的用法。
XAML 文件 (MainWindow.xaml)
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox Name="listBox" HorizontalAlignment="Left" Height="300" VerticalAlignment="Top" Width="200"/>
</Grid>
</Window>
代码后置文件 (MainWindow.xaml.cs)
using System.Collections;
using System.Collections.Generic;
using System.Windows;
namespace WpfApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DisplayData();
}
private void DisplayData()
{
// 使用 List
List<int> list = new List<int> { 1, 2, 3 };
listBox.Items.Add("List:");
foreach (var item in list)
{
listBox.Items.Add(item);
}
// 使用 IList
IList<string> ilist = new List<string> { "Alice", "Bob", "Charlie" };
listBox.Items.Add("IList:");
foreach (var item in ilist)
{
listBox.Items.Add(item);
}
// 使用 ArrayList
ArrayList arrayList = new ArrayList { 1, "two", 3.0 };
listBox.Items.Add("ArrayList:");
foreach (var item in arrayList)
{
listBox.Items.Add(item);
}
// 使用 Dictionary
Dictionary<string, int> dictionary = new Dictionary<string, int>
{
{ "Apple", 1 },
{ "Banana", 2 },
{ "Cherry", 3 }
};
listBox.Items.Add("Dictionary:");
foreach (var kvp in dictionary)
{
listBox.Items.Add($"{kvp.Key}: {kvp.Value}");
}
}
}
}
结果如下:
用到哪,学到哪!!