在我们的Delphi应用程序中,我们使用TStringList来存储字符串和相应的对象。对于另一个项目,我需要在C#中做类似的事情,但我不确定这样做的最有效方法是什么。到目前为止,我想过使用数组列表,列表或字典。这些中的一个会对我想要做的有效吗?如果不是,这是一个好方法吗?什么是C#最有效的对应于Delphi的TStringList?
回答
这取决于你需要什么TStringList的特性。没有真正的直接替代品。
A dictionary<string,object>
是无序的,你不能有重复的字符串。没有Text属性可以一次设置所有的字符串,等等。如果所有这些都与你合适,我会为此付出代价。
否则,你可能会考虑定义像个小类:
public class Item {
public string String {get;set;}
public object Object {get;set;}
}
,然后使用List<Item>
。这给你一个(字符串,对象)元组的有序列表。
这取决于您的收藏需要的功能。我会用Dictionary<string, object>
(泛型)。
对于一个小对象列表,我会使用Dictionary<string,xxx>
其中xxx
是您希望按字符串索引存储的对象的类型。
字典是一个类型安全的散列表 – Jimmy 2011-01-25 16:11:30
`字典
发布更新,我必须有一个愚蠢的一天。 – Jamiec 2011-01-25 16:46:48
这篇博客显示相当不错的排序列表和字典之间的差异
http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable/
如果字符串是唯一的,请使用Dictionary<string, T>
。如果它们不能保证是唯一的,那么字典就不合适,你可能会想使用一个列表Tuple<string, T>
(C#4)或者列表KeyValuePair<string, T>
,这将与字典非常相似,除了明显不保证唯一性,并且它保留了字典不一定要这样做的顺序。
Dictionary<string, T>> yourDictionary; // or
List<Tuple<string, T>> yourCollection; // or
List<KeyValuePair<string, T>> yourCollection;
最后,你可以定义自己的封装类型和创建如果使用其他的解决方案之一,你不希望的列表。
- 1. 什么是C#相当于Delphi的FormatFloat?
- 2. 什么是Delphi对应的C#通用列表
- 3. 为什么我的TStringList没有排序?
- 4. 为Delphi的UnicodeString获取UTF-16LE字节的最有效方法是什么?
- 5. 在Delphi中实现C#的BackgroundWorker的最佳方式是什么?
- 6. 什么是WinForms控件对应于VCL(Delphi)TControlBar?
- 7. 对于C++分配器,std :: align_val_t有效的对齐值是什么?
- 8. 什么是改变对的最有效的时间间隔?
- 9. 在Java(Android)语言中是否有类似Delphi中的TStringList?
- 10. 对于上传的文件,什么是有效的OleDbConnection ConnectionString?
- 11. C++ - 什么是测试空指针最有效的方法?
- 12. 对于Node.js和Javascript来说,读写文件最有效的媒介是什么?
- 13. 迭代JavaScript对象的最有效方法是什么?
- 14. 清除ActiveRecord对象集合的最有效方法是什么?
- 15. 什么是将DataTable转换为对象的最有效方法[,]?
- 16. 什么是对齐瓷砖最有效的方法?
- 17. 使用TStringList在Delphi中加载大文本文件的最佳方式是什么?
- 18. 什么是最小有效JSON?
- 19. 什么是社交网站的最佳/最有效的DBMS?
- 20. 替换为Delphi Prism中的TStringList。
- 21. 什么是有效的UUID?
- 22. 在Delphi中使用大量内存的对象的TStringList XE
- 23. 什么是C#等效的C#检查
- 24. 在C++中读取文件最后一行的最有效方法是什么?
- 25. 什么是最小和最大的有效第一类UUID?
- 26. 将C++结构体编组为C#的最有效方法是什么?
- 27. 什么是最快/最有效的查找/替换应用程序* nix
- 28. 对于许多具有类似但没有一致构造函数的类,最有效的设计是什么?
- 29. 检索多对多关系对象的最有效方法是什么?
- 30. 为什么业余执行Delphi的TStringList的Fortran版本比Delphi的内置版本低10倍?
`TStringList`是[字符串集合](http://www.freepascal.org/docs-html/rtl/classes/tstrings.html),不是吗? – abatishchev 2011-01-25 16:19:59