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

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

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

Не могу понять почему IndexOf не видит объект в коллекции. Почему первая проверка не замечает повторяющихся объектов в списке, а вторая проверка видит повторяющиеся строки в коллекции?
Листинг программы
  1. public class Logic
  2. {
  3. private List<Company> list_of_companies = new List<Company>();
  4. private List<string> names_list = new List<string>();
  5. private List<string> all_lines_articles = new List<string>();
  6. public void Create_all_lines()
  7. {
  8. all_lines_articles.Add("** Lastochka");
  9. all_lines_articles.Add("** Basilio");
  10. all_lines_articles.Add("** Alisa");
  11. all_lines_articles.Add("** Karabas");
  12. all_lines_articles.Add("** Barabas");
  13. all_lines_articles.Add("** Basilio");
  14. all_lines_articles.Add("** Buratino");
  15. all_lines_articles.Add("** Alisa");
  16. all_lines_articles.Add("** Barabas");
  17. all_lines_articles.Add("** Buratino");
  18. all_lines_articles.Add("** Lastochka");
  19. }
  20. public void Set_company_list()
  21. {
  22. foreach (string line in all_lines_articles)
  23. {
  24. if (line.StartsWith("**"))
  25. {
  26. string company_name = line.Substring(2, line.Length - 2);
  27. Company company = new Company(company_name);
  28. int index_of_company = list_of_companies.IndexOf(company);
  29. if (index_of_company == -1)
  30. {
  31. list_of_companies.Add(company);
  32. }
  33. }
  34. }
  35. }
  36. public void Set_names_list()
  37. {
  38. foreach (string line in all_lines_articles)
  39. {
  40. if (line.StartsWith("**"))
  41. {
  42. string company_name = line.Substring(2, line.Length - 2);
  43. int index_of_name = names_list.IndexOf(company_name);
  44. if (index_of_name == -1)
  45. {
  46. names_list.Add(company_name);
  47. }
  48. }
  49. }
  50. }
  51. }

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace ConsoleApplication51
  5. {
  6.     class Program
  7.     {
  8.         struct TestStruct
  9.         {
  10.             public int first;
  11.             public int second;
  12.         }
  13.         class TestObject
  14.         {
  15.             public int first;
  16.             public int second;
  17.         }
  18.         static void Main(string[] args)
  19.         {
  20.             List<TestObject> lso = new List<TestObject>() { new TestObject() { first = 1, second = 2 }, new TestObject() { first = 4, second = 2 }, new TestObject() { first = 7, second = 2 } };
  21.             List<TestStruct> lss = new List<TestStruct>() { new TestStruct() { first = 1, second = 2 }, new TestStruct() { first = 4, second = 2 }, new TestStruct() { first = 8, second = 2 } };
  22.             Console.WriteLine(lso.IndexOf(new TestObject { first = 4, second = 2 })); //это выведет -1
  23.             Console.WriteLine(lss.IndexOf(new TestStruct { first = 4, second = 2 })); //а это 1
  24.             Console.Read();
  25.         }
  26.     }
  27. }

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


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

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

15   голосов , оценка 4.067 из 5

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

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

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