c# - 将我自己的类传递给对象

标签 c# .net winforms object

我有一个函数 WriteList将列表保存到文件中。此函数具有参数 List<Object>所以我可以将不同类型的列表作为参数传递。

    public void WriteList(List<object> input, string ListName)
    {
        WriteToFile("List - " + ListName);
        foreach (object temp in input)
        {
            WriteToFile(temp.ToString());
        }
    }

从我的代码调用此函数时,我想传递参数 List<Database>其中 Database是我自己制作的类(class)。我收到以下错误:

cannot convert from 'System.Collections.Generic.List -Database-' to 'System.Collections.Generic.List-object-'

所以我的问题是如何将我自己的类转换为一个对象,然后将一个列表传递给我的函数。

最佳答案

List<T>不是 covariant .使用 IEnumerable<T>相反:

public void WriteList(IEnumerable<object> input, string ListName)
{
    WriteToFile("List - " + ListName);
    foreach (object temp in input)
    {
        WriteToFile(temp.ToString());
    }
}

或者使方法通用:

public void WriteList<T>(List<T> input, string ListName)
{
    WriteToFile("List - " + ListName);
    foreach (T temp in input)
    {
        WriteToFile(temp.ToString());
    }
}

IMO:第二个更好,因为与值类型一起使用时没有装箱/拆箱。

关于c# - 将我自己的类传递给对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17446731/

相关文章:

c# - 使用 Moq 框架模拟方法不会返回预期结果

c# - 没有 OrderedDictionary 的通用实现?

c# - 通用 EventArgs 类未显示在 WinForms 设计器的属性网格上

c# - 需要一个兼容 Mono 的 WinForms 对接库

c# - 覆盖 WebControl 上的控件集合

c# - 在 T-SQL 上解密 AES 128

c# - 关闭已编程的应用程序后,系统句柄仍然存在。文件无法访问

c# - 将 JavaScript/JSON 数组传递给 MVC 'GET' 方法

c# - 加载时Listview太慢

c# - 为什么 Rhino.Mocks 和 Moq 说 Bar 是不可覆盖的成员?