我可以從我的DAL返回列表嗎?在互聯網上,我在某處讀到它不好。 返回列表有什麼問題?C#DAL returing generic列表<T>
回答
您可以返回一個List<T>
對象,但該屬性應爲而不是IList<T>
。這將允許您更改稍後使用的列表實現,而不會破壞與針對庫編譯的現有程序集的二進制兼容性。
這個例子可能不會你的構造模式相一致,但它證明了我是什麼意思(返回List<T>
通過IList<T>
屬性):
public class Foo
{
public IList<string> AListOfStrings { get; private set; }
public Foo()
{
AListOfStrings = new List<string>();
}
}
如何只返回IEnumerable的''
@John:或許,但我會傾向於'ICollection
如果你不需要索引或計數,你可以使用'IEnumerable
原則,有沒有問題,但是回來的List<T>
,常見的問題是當類返回一個違反封裝的成員變量List<T>
,例如
public class SomeClass<T>
{
public List<T> Items { get; private set; }
public void DoSomething()
{
T first = Items[0];
...
}
}
在這種情況下,這個類的任何客戶端可以修改它的狀態,這可能會導致錯誤,因爲類可以不再能保護其不變量。請注意,在這種情況下返回IList<T>
將無濟於事。
但是,對於數據訪問對象,它(希望)不會保留任何查詢的結果,因此每次都會返回列表的新副本,並且不會受到任何客戶端的修改的影響。
如果對列表的任何修改都將被忽略,爲什麼不返回'IEnumerable
- 1. Returing元組的鍵列表和值
- 2. DataGridView中的錯誤 - simpel數據源,列表<generic>?
- 3. 與列表疑問<Generic>明確演員演員
- 4. 在Generic Repository中應用表達式<Func <TEntity,bool >>?
- 5. Generic <T>()vs Generic(System.Type)。泛型VS反射
- 6. Returing數組
- 7. FlowJs - 從陣列<Concrete>轉換爲陣列時出錯<Generic>
- 8. 列表<>與多個列表C#
- 9. C#JSON從列表<>
- 10. c#randomize列表<action>
- 11. C#XML列表<int>
- 12. 在列表<string> C#
- 13. Java列表<?>在C#
- 14. 從列表<>在C#
- 15. 將列表<int>轉換成列表<float>? C#
- 16. 轉換列表<列表<string[]>>入串[] [] [],在c#
- 17. c#exit generic ForEach使用lambda
- 18. Ucfirst Returing Incorrect Result
- 19. 部隊更新TGT
- 20. C# - 反序列化列表<String>
- 21. Solr search not returing documents
- 22. typescript generic type guard
- 23. 演員表<object>至列表<myclass> c#
- 24. 列表<Object>和列表<?>
- 25. Hashmap generic
- 26. 返回列表<object>自IEnumerable C#
- 27. 移調列表<T>使用C#
- 28. C#列表<MyObj> Remove方法
- 29. C#字節[]返回列表<int>
- 30. 將項添加到列表<> c#
的可能重複[C# - 列表或IList的](http://stackoverflow.com/questions/400135/c-listt-or-ilistt) –
2010-12-14 21:03:18