IndexOf в коллекции объектов - C#

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

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

Не могу понять почему IndexOf не видит объект в коллекции. Почему первая проверка не замечает повторяющихся объектов в списке, а вторая проверка видит повторяющиеся строки в коллекции?
public class Logic
    {
        private List<Company> list_of_companies = new List<Company>();
        private List<string> names_list = new List<string>();
        private List<string> all_lines_articles = new List<string>();
        public void Create_all_lines()
        {
            all_lines_articles.Add("** Lastochka");
            all_lines_articles.Add("** Basilio");
            all_lines_articles.Add("** Alisa");
            all_lines_articles.Add("** Karabas");
            all_lines_articles.Add("** Barabas");
            all_lines_articles.Add("** Basilio");
            all_lines_articles.Add("** Buratino");
            all_lines_articles.Add("** Alisa");
            all_lines_articles.Add("** Barabas");
            all_lines_articles.Add("** Buratino");
            all_lines_articles.Add("** Lastochka");
        }
        public void Set_company_list()
        {
            foreach (string line in all_lines_articles)
            {
                if (line.StartsWith("**"))
                {
                    string company_name = line.Substring(2, line.Length - 2);
                    Company company = new Company(company_name);
                    int index_of_company = list_of_companies.IndexOf(company);
                    if (index_of_company == -1)
                    {
                        list_of_companies.Add(company);
                    }
                }
            }
        }
        public void Set_names_list()
        {
            foreach (string line in all_lines_articles)
            {
                if (line.StartsWith("**"))
                {
                    string company_name = line.Substring(2, line.Length - 2);
                    int index_of_name = names_list.IndexOf(company_name);
                    if (index_of_name == -1)
                    {
                        names_list.Add(company_name);
                    }
                }
            }
        }
    }

Решение задачи: «IndexOf в коллекции объектов»

textual
Листинг программы
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication51
{
    class Program
    {
        struct TestStruct
        {
            public int first;
            public int second;
        }
        class TestObject
        {
            public int first;
            public int second;
        }
        static void Main(string[] args)
        {
            List<TestObject> lso = new List<TestObject>() { new TestObject() { first = 1, second = 2 }, new TestObject() { first = 4, second = 2 }, new TestObject() { first = 7, second = 2 } };
            List<TestStruct> lss = new List<TestStruct>() { new TestStruct() { first = 1, second = 2 }, new TestStruct() { first = 4, second = 2 }, new TestStruct() { first = 8, second = 2 } };
            Console.WriteLine(lso.IndexOf(new TestObject { first = 4, second = 2 })); //это выведет -1
            Console.WriteLine(lss.IndexOf(new TestStruct { first = 4, second = 2 })); //а это 1
            Console.Read();
        }
    }
}

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


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

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

15   голосов , оценка 4.067 из 5
Похожие ответы