Ich habe eine Liste < MyObj >
Ich habe auch Equals(Object) in der Klasse MyObj überschrieben.
Wenn ich indexOf in meiner Liste aufrufe, wird kein Index erhalten und equals wird nicht aufgerufen.
Ist meine Annahme richtig, dass Equals(Object) aufgerufen werden sollte, wenn ich indexOf aufrufe?
Wenn nicht, wie finde ich MyObj-Objekte, wenn ich keine genaue Referenz habe, aber die Objekte logisch gleich sind...?
hier ist der Code, den ich verwende
public class TreeNode
{
private readonly List> _children = new List>();
public TreeNode(T value)
{
Value = value;
}
public virtual bool Equals(Object obj)
{
TreeNode treeNode = (TreeNode)obj;
if (treeNode.Value.Equals(Value))
return true;
else
return false;
}
public TreeNode this[int i]
{
get { return _children[i]; }
}
public TreeNode Parent { get; private set; }
public T Value { get; set; }
public ReadOnlyCollection> Children
{
get { return _children.AsReadOnly(); }
}
public TreeNode AddChild(T value)
{
var node = new TreeNode(value) { Parent = this };
_children.Add(node);
return node;
}
public bool RemoveChild(TreeNode node)
{
return _children.Remove(node);
}
public void Traverse(Action action)
{
action(Value);
foreach (var child in _children)
child.Traverse(action);
}
}
so rufe ich die Sammlung auf
int artistIndex = serverDirs.Children.IndexOf(new TreeNode(artist));
Im Index, der zurückgegeben wird, ist immer -1, obwohl das Element in den Kindern vorhanden ist. Vielen Dank,