Avatar ·

ما الفرق بين البرمجة التصريحية والأمرية في C#؟

مرحبًا بالجميع! أنا مطور C# مبتدئ، والمصطلحان "البرمجة الأمرية" و"البرمجة التصريحية" يربكانني باستمرار. قرأت مقالات مختلفة، لكني لم أفهم الفرق عمليًا بشكل كامل. على سبيل المثال، أكتب هذا الكود لتصفية قائمة الأرقام:
List<int> numbers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> evenNumbers = new List<int>();

for (int i = 0; i < numbers.Count; i++)
{
    if (numbers[i] % 2 == 0)
    {
        evenNumbers.Add(numbers[i]);
    }
}
هذا هو النهج الأمرّي، صحيح؟ أنا أصف بوضوح كيف أفعل: إنشاء حلقة، التحقق من الشرط، الإضافة إلى القائمة. لكن بعد ذلك أرى طريقة أخرى:
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
هل هذا تصريحي؟ أنا فقط أقول ماذا أريد الحصول عليه (الأرقام الزوجية)، وليس كيف أفعل ذلك بالضبط. لكني لست متأكدًا تمامًا. ما هو الفرق الرئيسي بالضبط؟ متى نستخدم أي نهج؟ هل هناك حالات يكون فيها أحدهما أفضل من الآخر؟