Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
.NET 4.x

Переопределение Equals. Как его можно переопределить?

01.01.2011, 01:13. Показов 3245. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я в классе определил 2 оператора != и ==, теперь студия подсказывает, что у меня не переопределён метод Equals. Как можно переопределить сравнение? Или вообще это не нужно? Или сравнение и в данном случае в методе Equals нормально будет работать?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Windows;
 
namespace MyProgram.Hotkeys
{
    internal class HotkeyValue
    {
        public Boolean Control;
        public Boolean Shift;
        public Boolean Alt;
        public Keys Key;
        public HotKey hotkey;
 
        public HotkeyValue(Boolean Control, Boolean Shift, Boolean Alt, Keys Key, Window window)
        {
            this.Control = Control;
            this.Shift = Shift;
            this.Alt = Alt;
            this.SetHotkey(Control, Shift, Alt, Key, window);
        }
 
        public void SetHotkey(Boolean Control, Boolean Shift, Boolean Alt, Keys Key, Window window)
        {
            //......... какой-то код ..........
        }
 
        public static Boolean operator ==(HotkeyValue hotkeyValueOne, HotkeyValue hotkeyValueTwo)
        {
            if (hotkeyValueOne.Control == hotkeyValueTwo.Control &&
                hotkeyValueOne.Shift == hotkeyValueTwo.Shift &&
                hotkeyValueOne.Alt == hotkeyValueTwo.Alt &&
                hotkeyValueOne.Key == hotkeyValueTwo.Key)
            {
                return true;
            }
            return false;
        }
 
        public static Boolean operator !=(HotkeyValue hotkeyValueOne, HotkeyValue hotkeyValueTwo)
        {
            if (hotkeyValueOne.Control != hotkeyValueTwo.Control &&
                hotkeyValueOne.Shift != hotkeyValueTwo.Shift &&
                hotkeyValueOne.Alt != hotkeyValueTwo.Alt &&
                hotkeyValueOne.Key != hotkeyValueTwo.Key)
            {
                return true;
            }
            return false;
        }
 
        //Каким образом переопределить сравнение? 
        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }
    }
}
Добавлено через 21 минуту
Ничего не понимаю. Попытался запустить и на тебе исключение:
В методе где переопределяется == типа отсутствует ссылка на объект.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.01.2011, 01:13
Ответы с готовыми решениями:

Equals и GetHashCode и их переопределение?
Говорят существует правило, что если мы переопределяем Equals, то должны переопраделить и GetHashCode - почему?

Компилятор ругается на переопределение метода Equals
Вот переопределил метод Equals public override bool Equals(Person p1) { if (p1.name == name ||...

Как создать правильно новый класс и переопределить его метод
Необходимо создать новый класс родителем которого будет textBox в котором будет прикручено: private void...

1
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8726 / 3678 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
01.01.2011, 03:17
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            public static Boolean operator == ( HotkeyValue hotkeyValueOne, HotkeyValue hotkeyValueTwo ) {
                if (hotkeyValueOne.Control == hotkeyValueTwo.Control &&
                    hotkeyValueOne.Shift == hotkeyValueTwo.Shift &&
                    hotkeyValueOne.Alt == hotkeyValueTwo.Alt &&
                    hotkeyValueOne.Key == hotkeyValueTwo.Key) {
                    return true;
                }
                return false;
            }
 
            public static Boolean operator != ( HotkeyValue hotkeyValueOne, HotkeyValue hotkeyValueTwo ) {
                return !(hotkeyValueOne == hotkeyValueTwo);
            }
 
            //Каким образом переопределить сравнение? 
            public override bool Equals ( object obj ) {
                if (!(obj is HotkeyValue))
                    return false;
 
                return this == (HotkeyValue)obj;
            }
Object.Equals
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.01.2011, 03:17
Помогаю со студенческими работами здесь

Переопределить equals() и hashCode()
Помогите пожалуйста с equals() и hashCode(). Есть класс в котором хранится многоменый массив. equals() переопределила( не знаю если...

Переопределение equals
Добрый день, товарищи. Пытаюсь переопределить метод "equals" во вновь созданном классе. package i1; import java.util.Objects; ...

Переопределение метода equals
В Хорстмане приводится следующий код, как пример переопределения метода equals(): public class Employee { ... @Override ...

HashCode и equals (переопределение)
Здравствуйте, у меня возникла сложность с нashCode и equals. ______________________________________________________________________ ...

Переопределение hashcode и equals
Здравствуйте. Помогите пожалуйста понять ошибку "Method does not override method from its superclass". По заданию мне нужно бы создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru