TGViewer
C# Short Posts 🔞 C# Short Posts 🔞 @dimasshortposts · 310 subscribers
Post #22 62
Забудьте о классах, у нас есть records! :⚒
Главное, что подкупает в рекордах это возможность сделать так:

var neoPerson = person with { FullName = "Neo" };

✅ Чем это круто? Тем, что neoPerson будет совершенно новым объектом, со своей ссылкой, но с одним измененным свойством. Но самое главное – это вообще единственный способ поменять что-то в рекорде. Это дает простой способ сделать класс (а рекорды под капотом это обычные классы) иммутабельным.

🕔 Раньше, если вы хотели добиться от класса подобной иммутабельности, то вы бы поели говна из копипасты. Типа:

var personClass = new PersonClass("Laurence Fishburne", new DateOnly(0,1,1));

var morpheusPersonClass = new PersonClass("Morpheus", personClass.DateOfBirth);

И, чем больше полей, тем больше копипасты. Либо пришлось бы придумывать какие-то методы, которые бы по-умному клонировали объект. В общем дело было швах, а теперь иммутабельность можно нести в массы!

🛡Как это применить в проде?
Если у вас есть вот такой класс, к примеру

public class PersonClass
{
public PersonClass(string fullName, DateOnly dateOfBirth)
{
FullName = fullName;
DateOfBirth = dateOfBirth;
}

public string FullName { get; }
public DateOnly DateOfBirth { get; }
}

Можете смело заменить его на

public record Person(string FullName, DateOnly DateOfBirth);

Нужно будет поправить некоторые места в проекте, но по одному классу в день и рано или поздно весь проект переползет на рекорды.
More from @dimasshortposts
  1. Oct 2, 2026s
  2. Oct 2, 2026Post #503
  3. Sep 30, 2026🛤 Путь до Tier1: от чего он зависит В прошлый раз мы гоняли hello world в цикле и увидели…
  4. Sep 26, 2026🧵 Тредик для вопросов по докладу про MAF на дотнексте В докладе многие подробности опусти…
  5. Sep 23, 2026Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺 🧑‍💻dp🥁 #he…
  6. Sep 16, 2026🎯 Instrumented Tier0: профилирование кода В прошлый раз мы разобрали два уровня компиляци…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →