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