Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
29 / 29 / 4
Регистрация: 29.09.2009
Сообщений: 177
1

Есть ли простой способ сделать структуру шаблонной и не потерять работоспособность перегрузок?

01.11.2014, 12:50. Показов 590. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Скажите, пожалуйста, есть ли в C# простой способ сделать структуру шаблонной и не потерять работоспособность перегрузок?:
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
struct DoubleUInt32Key
    {
        private uint Key1;
        private uint Key2;
 
        public DoubleUInt32Key(uint Key1, uint Key2)
        {
            this.Key1 = Key1;
            this.Key2 = Key2;
        }
 
        public static bool operator ==(DoubleUInt32Key a, DoubleUInt32Key b)
        {
            if (a.Key1 == b.Key1 && a.Key2 == b.Key2)
                return true;
            else return false;
        }
 
        public static bool operator !=(DoubleUInt32Key a, DoubleUInt32Key b)
        {
            if (a.Key1 != b.Key1 && a.Key2 != b.Key2)
                return true;
            else return false;
        }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2014, 12:50
Ответы с готовыми решениями:

Есть ли простой способ сделать контент и изображения адаптивным?
Добрый день форумчане. Столкнулся с тем, что браузеры теперь не сжимают страницу до конца, и из...

Есть ли простой способ сделать две агрегации в одном запросе?
Есть таблица Order ( PointId(айди клиента) , OrderId , OrderDate) Есть таблица OrderItem (OrderId...

Есть ли простой способ разобраться с приблудой на видео?
Нужно изменить голос в реальном времени по телефону. Автор ролика 79lZ3dZESPE предлагает способ...

Есть ли простой способ удалить строку из массива (не из матрицы чисел)
Здравствуйте! Прошу помочь разобраться: есть ли простой способ удалить строку(столбец) из...

3
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
01.11.2014, 13:45 2
Вы говорите о чем то вроде такого:

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
62
63
64
65
66
67
68
69
70
71
72
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var one = new UInt<long>(23, 34);
            var two = new UInt<long>(12, 34);
            var three = new UInt<long>(23, 34);
 
            Console.WriteLine(one == two);
            Console.WriteLine(one == three);
 
            Console.ReadKey();
        }
    }
 
    public class UInt<T> : Keys<T> where T : struct
    {
        public UInt(T Key1, T Key2)
        {
            base.Key1 = Key1;
            base.Key2 = Key2;
        }
 
        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }
 
        public override int GetHashCode()
        {
            return base.GetHashCode();
        }
 
        public static bool operator ==(UInt<T> a, UInt<T> b)
        {
            return a.Equals(b);
        }
 
        public static bool operator !=(UInt<T> a, UInt<T> b)
        {
            return !a.Equals(b);
        }
    }
 
    public class Keys<T>
    {
        public T Key1;
        public T Key2;
 
        public override bool Equals(object obj)
        {
            try
            {
                var target = obj as Keys<T>;
                return Key1.Equals(target.Key1) && Key2.Equals(target.Key2);
            }
            catch
            {
                return false;
            }
        }
 
        public override int GetHashCode()
        {
            return base.GetHashCode();
        }
    }
}
1
29 / 29 / 4
Регистрация: 29.09.2009
Сообщений: 177
01.11.2014, 17:39  [ТС] 3
freeba, У вас слишком сложная реализация. Я не знал, что 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
struct DoubleKey<T>
    {
        private T Key1;
        private T Key2;
 
        public DoubleKey(T Key1, T Key2)
        {
            this.Key1 = Key1;
            this.Key2 = Key2;
        }
 
        public static bool operator ==(DoubleKey<T> a, DoubleKey<T> b)
        {
            if (a.Key1.Equals(b.Key1) && a.Key2.Equals(b.Key2))
                return true;
            else return false;
        }
 
        public static bool operator !=(DoubleKey<T> a, DoubleKey<T> b)
        {
            return !(a == b);
        }
    }
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
01.11.2014, 20:34 4
SaweR, Да, можно и так. Действительно переборщил с абстракциями
0
01.11.2014, 20:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2014, 20:34
Помогаю со студенческими работами здесь

Есть ли простой способ переноса приложения Windows Forms на WPF?
Доброго дня всем, у меня проблема такого рода, был проект на винформе и вот захотелось опробовать...

Есть ли более простой и оптимальный способ решения данной задачи?
Добрый день! Ситуация следующая: Есть класс Event. public class Event { public string...

Какой есть самый быстрый и простой способ обработать данные, поступившие из формы
Какой есть самый быстрый и простой способ обработать данные, поступившие из формы (т.е. получить...

Есть способ сделать покороче?
Здравствуйте! Давно интересовал один вопрос, а именно: Есть, например, такая конструкция class...

Множественный String.Replace: есть ли способ сделать одновременную замену
Существуют строковые переменные, в которых необходимо все вхождения 20 подстрок заменить на 20...

Есть ли способ сделать так, чтобы ссылки на youtube открывались не в браузере а в VLC ?
https://www.youtube.com/watch?***** большинство линков начинаются на именно так, если их...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru