在C#编程中,有时我们需要将一个单独的对象包装成列表形式,以便复用只接受集合参数的方法或接口。下面介绍几种常见且规范的做法。

使用集合初始化器
最简单直接的方式是使用List的集合初始化器,把对象作为初始元素放入列表中。这种方式可读性好,也不会引入额外依赖。
using System.Collections.Generic;
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
class Program
{
static void Main()
{
User user = new User { Id = 1, Name = "Tom" };
// 使用集合初始化器封装单个对象
List<User> userList = new List<User> { user };
}
}
使用LINQ的ToList扩展方法
如果你已经有一个单独的对象,并希望快速转为List,可以使用LINQ,先把对象放进数组再调用ToList,或者直接用Enumerable.Repeat。
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string item = "hello";
// 方法一:先转数组再ToList
List<string> list1 = new[] { item }.ToList();
// 方法二:使用Repeat生成只含一个元素的序列
List<string> list2 = Enumerable.Repeat(item, 1).ToList();
}
}
使用List的构造函数接收IEnumerable
List本身提供了接收IEnumerable参数的构造函数,因此可以把只包含单个元素的数组传给它。
using System.Collections.Generic;
class Program
{
static void Main()
{
int number = 10;
List<int> numbers = new List<int>(new[] { number });
}
}
注意事项
在封装单个对象时,需要注意对象本身是否为null。如果对象可能为null但仍需保留在列表中,上述写法都可以正常添加null元素;如果业务上不允许null,应先做判空处理。
| 方式 | 适用场景 |
|---|---|
| 集合初始化器 | 代码简洁,日常最常用 |
| LINQ ToList | 已引用System.Linq,追求链式写法 |
| 构造函数传IEnumerable | 明确基于已有序列构造列表 |
综上,将单个对象封装为列表在C#中有多种正确方式,根据项目结构和代码风格选择即可,核心是确保类型一致且避免不必要的复杂封装。
C#Listobject_to_list修改时间:2026-07-27 21:45:17