DirectoryInfo对象可以安全地用作词典中的键吗?

d00*_*001 4 .net c#

我使用Dictionary,使用DirectoryInfo和FileInfo等对象作为键.这样使用它们是否安全?如何确保以这种方式安全地使用对象类型?

Ree*_*sey 7

通常,确切知道其行为方式的唯一方法是检查参考源.您可以查看文档以查看是否IEquatable<T>已实现(在这种情况下,您将获得"预期"行为).

如果有问题的类型不重写EqualsGetHashCode,则对任意对象的默认散列和平等将被使用.这意味着您可以将它用作键,但前提是您的查找是使用相同的类型实例完成的,因为默认情况下相等性是引用相等System.Object.

在这种情况下,DirectoryInfo相关类不会覆盖这些方法,这意味着您将获得对象的默认相等和散列,这可能不是您想要的.相反,我会建议使用FullName属性作为键,因为它是aa string并提供在字典中使用的适当的相等语义.