我有一个列表 <MyObj>
我还在 MyObj 类中覆盖了 Equals(Object)。
当我在我的列表上调用 indexof 时,它没有得到任何索引并且不调用 equals 。
当我调用 index of 时应该调用 Equals(Object) 的假设是否正确?
如果不是,如果我没有确切的参考,但对象在逻辑上是相同的,我如何找到 MyObj 对象,,,?
这是我正在使用的代码
public class TreeNode<T>
{
private readonly List<TreeNode<T>> _children = new List<TreeNode<T>>();
public TreeNode(T value)
{
Value = value;
}
public virtual bool Equals(Object obj)
{
TreeNode<T> treeNode = (TreeNode<T>)obj;
if (treeNode.Value.Equals(Value))
return true;
else
return false;
}
public TreeNode<T> this[int i]
{
get { return _children[i]; }
}
public TreeNode<T> Parent { get; private set; }
public T Value { get; set; }
public ReadOnlyCollection<TreeNode<T>> Children
{
get { return _children.AsReadOnly(); }
}
public TreeNode<T> AddChild(T value)
{
var node = new TreeNode<T>(value) { Parent = this };
_children.Add(node);
return node;
}
public bool RemoveChild(TreeNode<T> node)
{
return _children.Remove(node);
}
public void Traverse(Action<T> action)
{
action(Value);
foreach (var child in _children)
child.Traverse(action);
}
}
这就是我所说的收藏
int artistIndex = serverDirs.Children.IndexOf(new TreeNode<String>(artist));
在总是 -1 返回的索引中,即使该项目在孩子们那里谢谢,