В Java, если вы хотите правильно удалить объект из универсального метода Collection
по remove()
, вам необходимо реализовать методы equals(Object o)
и remove()
, которые могут быть автоматически сгенерированы в Eclipse. Пример этого метода выглядит так ---> ниже.
Как автоматически сгенерировать этот метод на C # (Visual Studio, я использую VS2013)?
Может, не надо, чтобы метод
List.Remove()
работал нормально?ЕСЛИ это невозможно автоматически, как должны выглядеть эталонные
Equals
методы? Я имею в виду, как это должно выглядеть.Метод Is
Equals()
даже используется вList.Remove()
, если бы вы могли показать мне, как нужно реализоватьEquals()
, чтобы он возвращал истину, если мы сравним ОДИНАКОВЫЕ ОБЪЕКТЫ (тот же адрес в памяти)
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((centerPanel == null) ? 0 : centerPanel.hashCode());
result = prime * result + ((lowerPanel == null) ? 0 : lowerPanel.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if(this == obj)
return true;
if(obj == null)
return false;
if(getClass() != obj.getClass())
return false;
LayoutDemo other = (LayoutDemo) obj;
if(centerPanel == null) {
if(other.centerPanel != null)
return false;
} else if(!centerPanel.equals(other.centerPanel))
return false;
if(lowerPanel == null) {
if(other.lowerPanel != null)
return false;
} else if(!lowerPanel.equals(other.lowerPanel))
return false;
return true;
}
IEqualityComparer
. Если вы щелкните красную строку с ошибкой под интерфейсом, Visual Studio предложит создать их автоматически. Но они будут содержать толькоthrow new NotImplementedException();
. - person Tim Schmelter   schedule 08.01.2014Equals
иGetHashCode
или только в одно или ни одного? Что автогенерируется выше, все?Equals
иGethashCode
нетривиальны для сложных объектов. - person Tim Schmelter   schedule 08.01.2014Equals()
даже используется вList.Remove()
, если так, не могли бы вы показать мне, какEquals()
должен быть реализован, чтобы возвращать истину, если мы сравним ОДИНАКОВЫЕ ОБЪЕКТЫ (тот же адрес в памяти) - person Yoda   schedule 08.01.2014Equals
используется вList.Remove
и в сравнить два объекта по ссылке:Object.ReferenceEquals(obj1, obj2)
. Всегда стоит сначала прочитать документацию. Вы найдете соответствующую информацию в разделе примечаний. - person Tim Schmelter   schedule 08.01.2014