C#DAL returing泛型List <T>

kay*_*yak 1 c# generics

我可以从我的DAL返回List吗?在互联网上,我在某处读到它并不好.如果返回List会有什么问题?

cdh*_*wie 9

您可以返回一个List<T>对象,但应该键入 该属性IList<T>.这将允许您更改稍后使用的列表实现,而不会破坏与针对您的库编译的现有程序集的二进制兼容性.

这个例子可能与你的构造函数模式不匹配,但它演示了我的意思(List<T>通过IList<T>属性返回):

public class Foo
{
    public IList<string> AListOfStrings { get; private set; }

    public Foo()
    {
        AListOfStrings = new List<string>();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @John:也许吧,但我更喜欢`ICollection <T>`而不是`IEnumerable <T>`.如果这是一个DAL类,修改可能是必要的,修改IEnumerables是非常重要的,而`ICollection <T>`暴露了变异方法. (3认同)
  • 如何返回`IEnumerable <T>`?那更加灵活. (2认同)