У меня есть структура
public struct item
{
public int id { get; set; }
public string name { get; set; }
}
Если я создаю HashSet<item>
и добавляю два равных элемента, второй не вставляется, потому что он уже существует (кажется, что equals выбрасывает одно и то же значение)
HashSet<item> hsi = new HashSet<item>();
Console.WriteLine(hsi.Add(new item() { id = 1, name = "test" })); //true
Console.WriteLine(hsi.Add(new item() { id = 1, name = "test" })); //false - expected result
сейчас Если я изменим struct
на class
public class item //changed struct to class
{
public int id { get; set; }
public string name { get; set; }
}
, то получится
HashSet<item> hsi = new HashSet<item>();
Console.WriteLine(hsi.Add(new item() { id = 1, name = "test" })); //true
Console.WriteLine(hsi.Add(new item() { id = 1, name = "test" })); //true
вопрос: почему равно работает для структуры, но недля класса?