【问题标题】:Cannot implicitly convert type System.Collections.Generic.IList System.Collections.Generic.List无法隐式转换类型 System.Collections.Generic.IList System.Collections.Generic.List
【发布时间】:2012-11-27 17:20:26
【问题描述】:

基本上,我正在将 SQL 数据表转换为可以成功完成的通用列表。但我不知道如何返回列表对象。我收到一个错误,说是 - 无法将类型 System.Collections.Generic.IList 隐式转换为 System.Collections.Generic.List

将 theList 作为 List 类型返回的正确方法是什么?

public List<MyObject> GetAllMyObjects()
{
    String command = "select * from names ";
    DataTable tableResult = DataTableToList.ExecuteDataTable(command, CommandType.Text, null,connectionString);

    IList<MyObject> theList = DataTableToList.ConvertTo<MyObject>(tableResult);

    return // I’m not sure how to return theList here...
}

【问题讨论】:

  • 通常你希望返回接口,这样事情就更松散耦合,因此更容易换出。为什么要专门返回List&lt;T&gt;
  • @YYY 通常我更喜欢返回可能的最低级别类型,除非我故意掩盖某些东西。如果他们只想将其视为简单的界面;如果他们需要访问较低级别的类型(例如在这种情况下),他们就需要开始执行诸如强制转换之类的事情,这会导致问题。

标签: c# list generics


【解决方案1】:

在您的 theList 对象上调用 ToList

return theList.ToList();

【讨论】:

  • 这工作谢谢。我得到的第一个答案是 return (List)theList;除了语法之外还有什么不同吗?
猜你喜欢
  • 1970-01-01
  • 2020-11-29
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多