0Pricing
C# Academy · درس

عناصر Tuple المسماة

امنحوا حقول tuple أسماءً ذات معنى

عناصر Tuple المسماة درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.

تسمية عناصر Tuple

بدلًا من Item1/Item2، يمكنك إعطاء عناصر tuple أسماءً لجعل الشيفرة أوضح: (int Id, string Name).

using System;

class Program
{
    static void Main()
    {
        (int Id, string Name) user = (1, "Ada");
        Console.WriteLine(user.Id + ": " + user.Name);
    }
}

الأسماء في القيمة الحرفية

يمكنك إرفاق الأسماء مباشرة عند إنشاء tuple، وسيحتفظ المترجم بها.

using System;

class Program
{
    static void Main()
    {
        var point = (X: 3, Y: 4);
        Console.WriteLine("X=" + point.X + ", Y=" + point.Y);
    }
}

لماذا تحسن الأسماء الوضوح

توثّق العناصر المسماة الغرض منها. فـ result.Total أوضح بكثير من result.Item2.

using System;

class Program
{
    static void Main()
    {
        var result = (Count: 3, Total: 150);
        Console.WriteLine("Avg: " + ((double)result.Total / result.Count).ToString("0.0"));
    }
}

الأسماء تسميات اختيارية

أسماء عناصر tuple وسيلة مساعدة وقت الترجمة. أما في الأساس، فما تزال الحقول هي Item1 وItem2؛ ويعمل الاسمان كلاهما.

using System;

class Program
{
    static void Main()
    {
        var p = (Age: 30, City: "Rome");
        Console.WriteLine(p.Age + " / " + p.Item1);   // same value
        Console.WriteLine(p.City + " / " + p.Item2);
    }
}

Tuples المسماة في توقيعات الدوال

يمكن للدالة التصريح عن tuple مسماة كنوع لمعلمة أو قيمة إرجاع، مما يجعل الواجهة البرمجية واصفة لنفسها.

using System;

class Program
{
    static (int Sum, int Product) Compute(int a, int b)
    {
        return (a + b, a * b);
    }

    static void Main()
    {
        var r = Compute(3, 4);
        Console.WriteLine("Sum=" + r.Sum + ", Product=" + r.Product);
    }
}

المزج بين التسمية والترتيب

يمكنك تسمية بعض العناصر وترك العناصر الأخرى موضعية، لكن تسمية جميع العناصر أوضح.

using System;

class Program
{
    static void Main()
    {
        var data = (Id: 7, "guest", Active: true);
        Console.WriteLine(data.Id + ", " + data.Item2 + ", " + data.Active);
    }
}

الأسماء مع الأعضاء المستنتجين

عند إنشاء tuple من متغيرات مسماة، يستطيع C# استنتاج أسماء العناصر المطابقة تلقائيًا.

using System;

class Program
{
    static void Main()
    {
        int width = 10, height = 5;
        var size = (width, height);   // names inferred from variables
        Console.WriteLine("w=" + size.width + ", h=" + size.height);
    }
}

تحديث العناصر المسماة

تظل العناصر المسماة حقولًا قابلة للكتابة، لذلك يمكنك إعادة إسنادها أثناء تشغيل البرنامج.

using System;

class Program
{
    static void Main()
    {
        var game = (Player: "A", Score: 0);
        game.Score += 25;
        Console.WriteLine(game.Player + " scored " + game.Score);
    }
}

Tuples المسماة في القوائم

تُقرأ قوائم tuples المسماة تقريبًا مثل صفوف جدول.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var people = new List<(string Name, int Age)>
        {
            ("Ann", 30),
            ("Bob", 25)
        };
        foreach (var p in people)
            Console.WriteLine(p.Name + " is " + p.Age);
    }
}

المساواة مع الأسماء

لا تؤثر الأسماء في المساواة. تكون tuple متساويتين عندما تتطابق قيمهما، بغض النظر عن أسماء العناصر.

using System;

class Program
{
    static void Main()
    {
        var a = (X: 1, Y: 2);
        var b = (A: 1, B: 2);
        Console.WriteLine(a == b);   // True - values match
    }
}

تجميع المفاهيم

تجمع tuples المسماة بين خفة tuples وقابلية قراءة الحقول المسماة، مما يجعلها مثالية لقيم الإرجاع الواضحة من الدوال.

using System;

class Program
{
    static (bool Ok, string Message) Validate(int age)
    {
        if (age < 0) return (false, "Age cannot be negative");
        return (true, "Valid");
    }

    static void Main()
    {
        var v = Validate(-1);
        Console.WriteLine(v.Ok + ": " + v.Message);
    }
}

اختبار سريع

اختبر مدى فهمك لعناصر tuple المسماة.

مراجعة

تجعل عناصر tuple المسماة مثل (int Id, string Name) الـ tuple موضحة لنفسها؛ إذ تصل إليها بالاسم بدلًا من Item1. ويمكن التصريح عن الأسماء أو استنتاجها من المتغيرات أو استخدامها في توقيعات الدوال. وهي تسميات وقت الترجمة ولا تؤثر في المساواة، التي تقارن القيم.

using System;

class Program
{
    static void Main()
    {
        var user = (Id: 42, Name: "Kai");
        Console.WriteLine(user.Name + " #" + user.Id);
    }
}

الأسئلة الشائعة

هل درس «عناصر Tuple المسماة» مجاني؟

نعم — نص درس «عناصر Tuple المسماة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.

ماذا ستتعلم في «عناصر Tuple المسماة»؟

امنحوا حقول tuple أسماءً ذات معنى تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «عناصر Tuple المسماة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات Value Tuples
  2. عناصر Tuple المسماة
  3. التفكيك
  4. Tuples كقيم مُعادة من الأساليب
← العودة إلى C# Academy