将对象列表传递给奇异方法

Passing list of objects to a singular method

提问人:Mohsen Ilkhani 提问时间:9/17/2023 最后编辑:Theodor ZouliasMohsen Ilkhani 更新时间:9/17/2023 访问量:61

问:

您可能知道不匹配。List<String>List<Object>

如何传递以下对象:

List<String>
List<Int>
List<className>

到单一方法?

例如,假设我们有一个这样的方法:

public void _AddListOfObject(string TitleOfDaataGridView, List<Object> Values)
{
    _Temp.Columns[0].Name = TitleOfDaataGridView;               
    foreach (object  i in Values)
    {
        //...
    }
}            

现在我无法将对象传递给此方法。List<string>

我该怎么做?

C# WinForms 方法 参数传递

评论

0赞 Klaus Gütter 9/17/2023
如果仅枚举(不添加或删除项),则可以更改 的参数类型。由于协方差,这也允许传递,例如 a .IEnumerable<Object>List<string>

答:

1赞 Lajos Arpad 9/17/2023 #1

您可以将字符串列表转换为对象列表,并传递:

using System;
using System.Collections.Generic;
                    
public class Program
{
    public static void _AddListOfObject(List<Object> Values)
    {
    }
    public static void Main()
    {
        List<string> strings = new List<string> {
            "a",
            "b",
            "c"
        };
        List<Object> objects = new List<Object>();
        objects.AddRange(strings);
        _AddListOfObject(objects);
    }
}
3赞 Dmitry Bychenko 9/17/2023 #2

您在寻找通用产品吗?让我们使用 where is an generic typeList<T>T

// Method has T generic type
public void _AddListOfObject<T>(string TitleOfDaataGridView, List<T> Values)
{
    _Temp.Columns[0].Name = TitleOfDaataGridView;  
             
    // Note, that i is of generic type T now
    foreach (T i in Values)
    {
    ...
    }
}  

从现在开始接受任何类型的列表:_AddListOfObject

List<int> list1 = new List<int>() { 1, 2, 3 };
List<string> list2 = new List<string>() { "a", "b", "c" };

_AddListOfObject("TitleInt", list1);
_AddListOfObject("TitleString", list2);