0Pricing
C# Academy · درس

أساسيات Value Tuples

أنشئوا tuples خفيفة للبيانات المجمّعة

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

ما هو Tuple؟

يجمع tuple عدة قيم في حزمة خفيفة واحدة من دون تعريف صنف. وتستخدم value tuples في C# الأقواس: (int, string).

using System;

class Program
{
    static void Main()
    {
        (int, string) pair = (1, "one");
        Console.WriteLine(pair.Item1 + " = " + pair.Item2);
    }
}

إنشاء Value Tuple

اكتب القيم بين قوسين. ويستنتج المترجم نوع tuple من هذه القيم.

using System;

class Program
{
    static void Main()
    {
        var point = (3, 4);
        Console.WriteLine("x=" + point.Item1 + ", y=" + point.Item2);
    }
}

الوصول إلى العناصر: Item1 وItem2

يمكن الوصول إلى عناصر tuple غير المسماة من خلال Item1 وItem2 وItem3 وما يليها، بالترتيب.

using System;

class Program
{
    static void Main()
    {
        var rgb = (255, 128, 0);
        Console.WriteLine("R=" + rgb.Item1 + " G=" + rgb.Item2 + " B=" + rgb.Item3);
    }
}

تحتوي Tuples على أنواع مختلطة

يمكن أن يكون لكل عنصر نوع مختلف. إذ يمكن أن تجمع tuple بين الأرقام والسلاسل النصية والقيم المنطقية وغير ذلك.

using System;

class Program
{
    static void Main()
    {
        var user = ("Ada", 36, true);
        Console.WriteLine(user.Item1 + ", age " + user.Item2 + ", active=" + user.Item3);
    }
}

Tuples قابلة للتغيير

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

using System;

class Program
{
    static void Main()
    {
        var score = (player: "A", points: 0);
        score.points = 10;
        score.points += 5;
        Console.WriteLine(score.player + ": " + score.points);
    }
}

Tuples كحزم محلية

تُعد Tuples مناسبة جدًا لجمع القيم مؤقتًا داخل دالة من دون إنشاء نوع مخصص.

using System;

class Program
{
    static void Main()
    {
        var range = (min: 5, max: 50);
        int span = range.max - range.min;
        Console.WriteLine("Span: " + span);
    }
}

مقارنة Tuples

تدعم value tuples المساواة: تكون tuple متساويتين إذا تساوى كل عنصر مقابل في كل منهما.

using System;

class Program
{
    static void Main()
    {
        var a = (1, 2);
        var b = (1, 2);
        var c = (1, 3);
        Console.WriteLine(a == b);
        Console.WriteLine(a == c);
    }
}

تداخل Tuples

يمكن أن يكون عنصر tuple نفسه tuple، مما يتيح إنشاء مجموعات منظمة صغيرة.

using System;

class Program
{
    static void Main()
    {
        var line = (start: (0, 0), end: (3, 4));
        Console.WriteLine("From " + line.start.Item1 + "," + line.start.Item2 +
            " to " + line.end.Item1 + "," + line.end.Item2);
    }
}

Tuples داخل المجموعات

يمكنك تخزين tuples في قائمة للحفاظ على البيانات المزدوجة معًا من دون إنشاء صنف.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var scores = new List<(string, int)>
        {
            ("Ann", 90),
            ("Bob", 85)
        };
        foreach (var s in scores)
            Console.WriteLine(s.Item1 + ": " + s.Item2);
    }
}

دلالات القيمة

إن value tuple هي struct، لذلك يؤدي إسنادها إلى نسخ القيم. ولا يؤثر تغيير النسخة في الأصل.

using System;

class Program
{
    static void Main()
    {
        var original = (n: 1);
        var copy = original;
        copy.n = 99;
        Console.WriteLine("original=" + original.n + ", copy=" + copy.n);
    }
}

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

توفر value tuples تجميعات سريعة ومحددة النوع، وهي مثالية للبيانات قصيرة العمر داخل دالة أو قائمة بسيطة.

using System;

class Program
{
    static void Main()
    {
        var result = (count: 3, total: 150);
        double average = (double)result.total / result.count;
        Console.WriteLine("Average: " + average.ToString("0.0"));
    }
}

اختبار سريع

اختبر مدى فهمك لـ value tuples.

مراجعة

تجمع value tuple عدة قيم بين قوسين، مثل (int, string)، من دون الحاجة إلى صنف. ويمكن الوصول إلى العناصر غير المسماة عبر Item1 وItem2. وتُعد Tuples هياكل قابلة للتغيير ذات دلالات قيمة، كما تدعم المساواة. وهي مثالية للتجميعات المحلية السريعة.

using System;

class Program
{
    static void Main()
    {
        var t = (1, "one", true);
        Console.WriteLine(t.Item1 + " " + t.Item2 + " " + t.Item3);
    }
}

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

هل درس «أساسيات Value Tuples» مجاني؟

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

ماذا ستتعلم في «أساسيات Value Tuples»؟

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

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

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

كم من الوقت يستغرق درس «أساسيات Value Tuples»؟

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

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

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

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

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