Как записать два списка в один?

328
19 июня 2017, 18:52

У меня есть 3 списка, к примеру ( корзина, белые яблоки и красные яблоки) , Могу ли я записать 2 списка (белых и красных яблок ) в одну "корзину". // Просто я хочу , потом перебирать эту корзину яблок и сверять к какому списку он раньше относился

public class White : IApple
{
    int IApple.Age { get; set; }
    public White()
    {
       int quantityWhite=2;
        List<White> white = new List<White>();
        for (int i = 0; i < quantityWhite ; i++) { white.Add(new White()); }
     }
}
public class Red : IApple
{       
    int IApple.Age { get; set; }
    public Red()
    {
       int quantityRed=2;
       List<Red> red = new List<Red>();
       for (int i = 0; i < quantityRed ; i++) { red.Add(new Red()); }
    }
}
public interface IApple
{
    int Age {get;set;}
}
public class CBasket
{
    private int cycle;
    private List<IApple> content; // чтобы вот тут находились и белые и красные яблоки)
    public void CycleExcute(CBasket iBasket) // Excute my project
    {
        int appleIndex = 0;
        while (appleIndex < iBasket.content.Count) // Проверка яблок в корзине
        {
            IApple nextApple = iBasket.content[appleIndex];
            nextApple.Age++;
            if (nextApple is White)
            {
            //
            }
        }
    }
}
Answer 1

Навскидку так может получиться:

using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int quantity = 2;
            var r = new Red();
            var w = new White();
            for (int i = 0; i < quantity; i++) 
            { 
                r.red.Add(new Red()); 
                w.white.Add(new White());
            }                
            var b = new CBasket();
            b.AddToBasket(r.red);
            b.AddToBasket(w.white);
            b.CycleExcute();
            Console.ReadLine();
        }
    }
    public class White : IApple
    {
        int IApple.Age { get; set; }
        public List<IApple> white = new List<IApple>();
    }
    public class Red : IApple
    {
        int IApple.Age { get; set; }
        public List<IApple> red = new List<IApple>();
    }
    public interface IApple
    {
        int Age { get; set; }
    }
    public class CBasket
    {
        private int cycle;
        private List<IApple> content = new List<IApple>(); // чтобы вот тут находились и белые и красные яблоки)
        public void CycleExcute() // Excute my project
        {
            for (int i = 0; i < content.Count; i++)
            {
                IApple nextApple = content[i];
                nextApple.Age++;
                if (nextApple is White)
                {
                    Console.WriteLine("White");
                }
                if (nextApple is Red)
                {
                    Console.WriteLine("Red");
                }
            }
        }
        public void AddToBasket(List<IApple> newApples)
        {
            content = content.Concat(newApples).ToList();
        }
    }
}

ПС : никогда в конструкторе класса не стоит создавать еще экземпляр этого же класса.

READ ALSO
Получить середину массива — System.IndexOutOfRangeException?

Получить середину массива — System.IndexOutOfRangeException?

SystemIndexOutOfRangeException: "Индекс находился вне границ массива

220
Технологии программирования [требует правки]

Технологии программирования [требует правки]

Даны два множества A и B, представленные массивами целых чиселНайти разность A-B этих множеств (например, для A={1,2,3} и B={2,1} разность A-B={3})

274
&ldquo;Фильтрованный&rdquo; поиск

“Фильтрованный” поиск

Есть массив данных то есть строкЯ ввел что софт мне показал, все строки, которые кончаются на "qj", он показал, но потом, надо чтобы софт показал...

298
Почему у меня не перелезают данные из DataTable в DataGridView?

Почему у меня не перелезают данные из DataTable в DataGridView?

ЗдравствуйтеВозможно, этот полный пример поможет Вам разобраться с Вашим вопросом

342