Устал от горы
if-else и switch? Pattern Matching — это как «умный» switch на стероидах. Проверяй тип, структуру и значения в одной строке.🎯 2 способа использовать Pattern Matching уже сегодня:
1️⃣ Type Patterns — замена громоздким проверкам типа
// Было:
if (enemy is Boss)
{
((Boss)enemy).SpecialAttack();
}
// Стало:
if (enemy is Boss boss)
{
boss.SpecialAttack(); // Без кастов!
}
// Идеально для обработки разных типов врагов:
void ProcessEnemy(Enemy enemy)
{
switch (enemy)
{
case Boss b:
b.StartBossFight();
break;
case FlyingEnemy f when f.IsFlying:
f.DiveAttack();
break;
default:
enemy.Patrol();
break;
}
}
2️⃣ Property Patterns — проверяй свойства объектов
// Мощная фильтрация прямо в switch:
string GetAttackType(Weapon weapon) => weapon switch
{
{ Damage: > 100, Type: "Fire" } => "Критическая огненная атака!",
{ Ammo: 0 } => "Оружие пусто!",
_ => "Обычный удар"
};
// Отлично для системы диалогов:
var reaction = npc switch
{
{ Mood: "Angry", Level: > 5 } => "Гневная реплика",
{ QuestCompleted: true } => "Благодарность",
_ => "Стандартный диалог"
};
💡 Запомни:
-
is с деконструкцией — убирает касты-
switch с паттернами — заменяет гигантские if-else-
when добавляет условия🚀 Результат: Меньше кода, меньше ошибок, лучше читаемость. Особенно в игровой логике!
#️⃣ P.S. Используешь уже? Делись кейсами в комментах!🔔 Подпишись — каждый день полезные фишки по Unity и C#