私はリストを持っています<MyObj>
MyObjクラスのEquals(Object)もオーバーライドしました。
リストでindexofを呼び出すと、インデックスが取得されず、equalsは呼び出されません。
のインデックスを呼び出すときに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で返されるインデックスでありがとう、