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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д