Как же всё-таки сделать копию Liss, где Т - ссылочный тип (в моем случае -- класс) - C#

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. class T
  2. {
  3. int d;
  4. DateTime f;
  5. public T(int d, DateTIme date = new DateTime()) { d = d; f = date;}
  6. }
  7. //где-то в Main или в другом классе
  8. List<T> list = new List<T>();
  9. //терь тут нужно сделать полную копию
Желательно без ICloneable, а простым присваиванием или чем-то вроде этого, просто сообразить никак не могу

Решение задачи: «Как же всё-таки сделать копию Liss, где Т - ссылочный тип (в моем случае -- класс)»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5.  
  6. internal class Program
  7. {
  8.     private static void Main(string[] args)
  9.     {
  10.         var list = new List<T> { new T(3) };
  11.         List<T> list2 = list.ToList<T>();
  12.  
  13.         var type = typeof(T);
  14.         var d = type.GetField("d", BindingFlags.NonPublic | BindingFlags.Instance);
  15.         d.SetValue(list2.First(),5);
  16.  
  17.  
  18.         Console.WriteLine(d.GetValue(list.First()));
  19.         Console.WriteLine(d.GetValue(list2.First()));
  20.  
  21.     }
  22. }
  23.  
  24. class T
  25. {
  26.     int d;
  27.     DateTime f;
  28.  
  29.     public T(int d, DateTime date = new DateTime())
  30.     {
  31.         this.d = d;
  32.         f = date;
  33.     }
  34. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.615 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы