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();
}
}
}