powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как не дублировать перегрузку оператора
5 сообщений из 5, страница 1 из 1
Как не дублировать перегрузку оператора
    #39283575
Саша_un
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 2 класса: class a<T>, и его наследник class a_int:a<int> к примеру.
Код: 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.
void Main()
{
  a<int> n = new a<int>();
  n = 10; //Работает
  Console.WriteLine("n={0}",n.Value);
  a_int m = new a_int();
  m = 20; //ОШИБКА: Неявное преобразование типа "int" в "a_int" невозможно. 
  Console.WriteLine("m={0}",m.Value);
}

class a<T>
{
  public T Value {get;set;}
  public static implicit operator a<T>(T value)
  {
    return new a<T> {Value = value};
  }
}

class a_int:a<int>
{
//	public static implicit operator a_int(int value)
//	{
//	  return new a_int {Value = value};
//	}
}



Есть ли способ как-то описать перегрузку оператора в базовом классе, так, чтобы в наследнике можно было это использовать, не перегружая в нём этот же оператор заново?
...
Рейтинг: 0 / 0
Как не дублировать перегрузку оператора
    #39283576
Иммануил Бонд Аренко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете объяснить case, зачем Вам понадобилось перегружать оператор?
...
Рейтинг: 0 / 0
Как не дублировать перегрузку оператора
    #39283577
Иммануил Бонд Аренко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша_unЕсть ли способ как-то описать перегрузку оператора в базовом классе, так, чтобы в наследнике можно было это использовать, не перегружая в нём этот же оператор заново?

смотрите спеку языка. за Вас чтоли её смотреть
...
Рейтинг: 0 / 0
Как не дублировать перегрузку оператора
    #39284018
Саша_un
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иммануил Бонд Аренкоможете объяснить case, зачем Вам понадобилось перегружать оператор?
Большой нужды в этом нет (скорее, просто любопытство). Но раз есть такая возможность в языке, мне приятнее, когда написано вот так:

a_int m = 20;

чем когда вот так:

a_int m = new a_int {Value = 20};

особенно если этих присвоений много.

Просто получается странно - если я создал свойство или метод в базовом классе, в наследнике я могу их использовать, ничего дополнительно при этом не делая. А вот если перегрузил оператор, то такой принцип уже не работает.
...
Рейтинг: 0 / 0
Как не дублировать перегрузку оператора
    #39284529
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша_un,

проблема в том, что a_int и a<int> это 2 разных типа (один является наследником от другого)
оператор определён в базовом типе, следовательно и возвращать он может только базовый тип

как думаешь такой код сработает?
Код: c#
1.
a<int> x = 20;
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как не дублировать перегрузку оператора
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]