Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
9 / 7 / 2
Регистрация: 26.12.2018
Сообщений: 278

Перегрузить оператор копирования

24.09.2019, 13:17. Показов 1948. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, нужна помощь с таким задание. Надо перезагрузить оператор копирования

Я новичёк в С# , как понимаю тут похожая схема, что и в плюсах.

в плюсах это выглядит как-то вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    MyVector & operator=(const MyVector & obj) //Копирует значение одного вектора в другой.
    {
        if (*this == obj)
            return *this;
 
        delete[] arr;
 
        length = obj.length;
        capacity = obj.capacity;
 
        arr = new int[capacity];
        for (int i = 0; i < length; i++)
        {
            arr[i] = obj.arr[i];
        }
 
        return *this;
    }
а вот в шарпах не знаю как переделать(( помогите пожалуйста, люди добрые)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2019, 13:17
Ответы с готовыми решениями:

Перегрузить оператор сложения строк
Перегрузить операторы таким образом, чтобы выполнялись следующие действия Гамбургер=Мясо+Сыр+Хлеб;

Можно ли перегрузить оператор присваивания
я тут случайно такое вычитал что у меня возникло стойкое отвращение к шарпу -_- В ШАРПЕ РЕАЛЬНО ЧТОЛИ НЕЛЬЗЯ ПЕРЕГРУЗИТЬ ОПЕРАТОР...

Перегрузить оператор = для пользовательского класса.
Есть код класа: /// &lt;summary&gt; /// Provide work with complex numbers. /// &lt;/summary&gt; public class Complex { ...

4
 Аватар для jester
352 / 247 / 76
Регистрация: 18.03.2016
Сообщений: 979
24.09.2019, 13:42
Лучший ответ Сообщение было отмечено Anton006 как решение

Решение

Anton006, https://metanit.com/sharp/tutorial/3.36.php

При перегрузке операторов надо учитывать, что не все операторы можно перегрузить. В частности, мы можем перегрузить следующие операторы:

унарные операторы +, -, !, ~, ++, --

бинарные операторы +, -, *, /, %

операции сравнения ==, !=, <, >, <=, >=

логические операторы &&, ||

операторы присваивания +=, -=, *=, /=, %=

И есть ряд операторов, которые нельзя перегрузить, например, операцию равенства = или тернарный оператор ?:, а также ряд других.

Полный список перегружаемых операторов можно найти в документации msdn
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
24.09.2019, 14:38
Цитата Сообщение от Anton006 Посмотреть сообщение
в плюсах это выглядит как-то вот так:
В C# нет "оператора копирования".
Перегрузка же оператора & (логическое или двоичное И) как оператор копирования внесёт только путаницу.
В C# для копирования используются методы типа, в первую очередь через реализацию интерфейса IClonable.
1
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
24.09.2019, 15:13

Не по теме:

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Перегрузка же оператора &
этот & в плюсах ничего общего с побитовыми операциями не имеет :)
в данном случае это возврат по ссылке



Добавлено через 15 минут
Цитата Сообщение от Anton006 Посмотреть сообщение
перезагрузить
это кнопочка на системнике такая
Цитата Сообщение от Anton006 Посмотреть сообщение
с таким задание. Надо перезагрузить оператор копирования
это невозможно в c#
Цитата Сообщение от Anton006 Посмотреть сообщение
тут похожая схема, что и в плюсах.
конструктор копирования, например

IClonable насколько я знаю считается плохим решением, так как возвращает непонятно что
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
24.09.2019, 16:32
Цитата Сообщение от КОП Посмотреть сообщение
этот & в плюсах ничего общего с побитовыми операциями не имеет
Знаю.
Поэтому и пишу В C# нет "оператора копирования"
Возможно неясно сформулировал ответ.

Цитата Сообщение от КОП Посмотреть сообщение
IClonable насколько я знаю считается плохим решением, так как возвращает непонятно что
Он не плохой, а кокой есть. Дефолтный. Других дефолтных для копирования не знаю.
Я при необходимости обычно объявляю производный интерфейс.
Что-то типа такого:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    /// <summary>Интерфейс для создания копии экземпляра того же типа
    /// и копирования значений в другой или из другого экземпляра</summary>
    /// <typeparam name="T"></typeparam>
    public interface ICopy<T> : ICloneable
    {
        /// <summary>Создание копии экземпляра</summary>
        /// <returns>Новый экземпляр в том же типе</returns>
        T Copy();
        /// <summary>Копирование значений экземпляра в другой экземпляр</summary>
        /// <param name="other">Другой экземпляр в который надо скопировать значения</param>
        void CopyTo(T other);
        /// <summary>Копирование значений экземпляра из другого экземпляра</summary>
        /// <param name="other">Другой экземпляр из которого надо скопировать значения</param>
        void CopyFrom(T other);
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.09.2019, 16:32
Помогаю со студенческими работами здесь

Перегрузить оператор ==, но не потерять возможности сравнения с null
Как перегрузить оператор == для класса, но так чтобы проверка на null осталась работоспособной. Потому как если я перегружаю оператор ==...

Перегрузить оператор ! ,для инвертирования знаков массива
Пытаюсь перегрузить оператор ! для инвертирования знаков массива,но что то не могу придумать как.

Перегрузить оператор -- для удаления 1 элемента из списка
Вот код,в котором я создаю универсальный шаблон для списка.В нем надо реализовать перегрузку операторов для добавления и удаления первого...

Как правильно перегрузить оператор сложения двух строк
Здравствуйте форумчане ! Я пытаюсь реализовать один алгоритм , в котором идет работа с двоичной сс. Но не знаю , как правильно...

Создать класс с двумя полями и перегрузить оператор сложения
Создать класс с двумя переменными x y int. И перегрузить оператор +


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru