我使用Dictionary,使用DirectoryInfo和FileInfo等对象作为键.这样使用它们是否安全?如何确保以这种方式安全地使用对象类型?
通常,确切知道其行为方式的唯一方法是检查参考源.您可以查看文档以查看是否IEquatable<T>已实现(在这种情况下,您将获得"预期"行为).
如果有问题的类型不重写Equals和GetHashCode,则对任意对象的默认散列和平等将被使用.这意味着您可以将它用作键,但前提是您的查找是使用相同的类型实例完成的,因为默认情况下相等性是引用相等System.Object.
在这种情况下,DirectoryInfo相关类不会覆盖这些方法,这意味着您将获得对象的默认相等和散列,这可能不是您想要的.相反,我会建议使用FullName属性作为键,因为它是aa string并提供在字典中使用的适当的相等语义.
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |