Из того, что вы описали, кажется, что вам нужно будет подождать, пока C # 9 типы записей , чтобы получить то, что вы описали для java s AutoValues
, т.е. в C # 9 вы должны иметь возможность объявить:
public data class Person
{
public string FirstName { get; init; }
public string LastName { get; init; }
}
Тогда вы получите:
Между тем (C # 8 и более ранние версии) вам нужно будет сделать часть этого вручную, ie
- Объявите свойства вашего класса как только получить
- Инициализировать все свойства через конструктор
- Создайте свой собственный stati c factory / методы построения
- Используйте инструменты генерации кода в IDE, например , для генерации элементов равенства
В стороне, я Если вы только что переключились с Java на C#, возможно, вы не знаете structs
как типы значений для тривиальных «записей», которые из документации:
Структуры лучше всего подходят для очень маленьких структур данных, содержащих в основном данные, которые не предназначены для изменения после создания структуры.
Хотя в структурах есть реализация по умолчанию равенства значений, это может быть неприемлемым, учитывая, что это только первое поле, включенное в хэш-код , и что вам нужно будет предоставить реализацию operator == , если вы хотите использовать ==
для равенство значений.
Тем не менее, варианты использования для структур должны быть тщательно рассмотрены и обычно должны использоваться только для тривиальных неизменяемых записей или из соображений производительности при использовании в массивах.