You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将List<String>、List<Int>等泛型列表传入单个方法?

解决List/List等无法传入接收List方法的问题

方案一:使用泛型方法(推荐)

把方法改成泛型形式,能兼容任意类型的List,编译器会自动推断类型,调用起来直接便捷:

public void _AddListOfObject<T>(string TitleOfDaataGridView, List<T> Values)
{
    _Temp.Columns[0].Name = TitleOfDaataGridView;               
    foreach (object i in Values)
    {
        // 原有逻辑无需改动
    }            
}

调用示例:

// 直接传入List<string>
_AddListOfObject("字符串列表", new List<string> { "张三", "李四" });
// 直接传入List<int>
_AddListOfObject("数字列表", new List<int> { 1, 2, 3 });

方案二:改用IEnumerable作为参数

C# 4.0及以上支持泛型协变,IEnumerable<out T>属于协变接口,因此List<string>、List<int>都可以隐式转换为IEnumerable<object>(值类型会自动装箱,不影响原有逻辑):

public void _AddListOfObject(string TitleOfDaataGridView, IEnumerable<Object> Values)
{
    _Temp.Columns[0].Name = TitleOfDaataGridView;               
    foreach (object i in Values)
    {
        // 原有逻辑无需改动
    }            
}

这种方式不需要修改调用代码,直接传入各种类型的List即可。

方案三:手动转换List(不推荐)

如果不想修改方法签名,可以将目标List转换成List<object>后传入,但会额外创建新集合,存在性能损耗:

var strList = new List<string> { "测试1", "测试2" };
// 方式1:通过Cast和ToList转换
_AddListOfObject("标题", strList.Cast<object>().ToList());
// 方式2:通过ConvertAll转换
_AddListOfObject("标题", strList.ConvertAll(item => (object)item));

内容的提问来源于stack exchange,提问作者Mohsen Ilkhani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:35:00