c # Tuple - ما هو الاستخدام العملي لـ Tuple

كنت أبحث في الأمثلة عبر الإنترنت عن Tuple لكنني لا أرى أي استخدام مثالي لها.

بمعنى ، يبدو وكأنه مكان لتخزين المتغيرات.

هل هناك أي استخدام عملي لـ Tuple . ما أحب القيام به هو تمرير قيمة إلى المجموعة ثم جعلها ترجع 3 قيم وهي جميع السلاسل.

0
ما الذي تعنيه ، "تمرير قيمة إلى الصفوف وجعلها ترجع ثلاث قيم"؟ لا تفعل tuples أي شيء باستثناء تخزين البيانات. إن السؤال عن ما هو عنوان tuple يشبه طرح ما هو POCO.
وأضاف المؤلف Kirk Woll, مصدر
هل بحثت عن ما هو طلبي قبل طرح هذا السؤال؟ ما الأمثلة التي استخدمت؟ ربما ضع في اعتبارك طرح سؤال أكثر مباشرة ، أي: "هل هذا <�سيناريو> ملائم ل Tuple؟" وما إلى ذلك ، لن أضع علاماتك ، ولكن هذا ليس سؤالًا جيدًا بالنسبة إلى المنظمة البحرية الدولية.
وأضاف المؤلف Nathan, مصدر

7 إجابة

Tuple s حاوية. يمكنك تخزين أي شيء فيه

لثلاثة عناصر ، يطلق عليها اسم الثلاثي. 4 عناصر الرباعي وهلم جرا.

أساسا يمكنك فقط عصا العناصر في ذلك.

في ما يلي مثال .

0
وأضاف
en.wikipedia.org/wiki/Tuple يجب تغيير ذلك في wiki alex.
وأضاف المؤلف DarthVader, مصدر
نعم ج # هو مجموعة شاملة من علوم الكمبيوتر.
وأضاف المؤلف DarthVader, مصدر
حسنا ، بشكل عام سيكون الثلاثي ، الرباعي ، ولكن في C# لا يوجد شيء من هذا القبيل.
وأضاف المؤلف Chris Sinclair, مصدر
DarthVader تقصد "مجموعة فرعية". ؛)
وأضاف المؤلف Chris Sinclair, مصدر
هذا غير صحيح ، لا يوجد ثلاثية أو رباعية. هناك 3-tuple ، 4-tuple ، إلخ.
وأضاف المؤلف alex, مصدر
السؤال حول فئة Tuple: msdn.microsoft.com/en-us/ مكتبة/system.tuple.aspx
وأضاف المؤلف alex, مصدر

حالة استخدام عملي: لنفترض أنك تريد تمرير قائمة بالبيانات المنظمة بين المكونات الداخلية المختلفة للبرامج.

  1. يمكنك إما تعريف فئة تمثل البيانات المنظمة. في هذه الحالة ، يجب أن تكون هذه الفئة باهتة بشكل مثالي ، حيث أنها ستحتوي فقط على خصائص تلقائية. من المحتمل أن تعلن ذلك في واجهة كفئة مدمجة (ولكن عليك بعد ذلك أن تقوم بادخالها باسم الواجهة) ، أو في نفس مساحة الاسم مثل الواجهة. في مرحلة ما ، قد يكون هذا رمزًا صحيًا غير ضروري لتحديد طبقة فردية لهذا الغرض.
  2. أو يمكنك استخدام المجموعة. بهذه الطريقة لا تحتاج إلى تعريف فصل لكل ذلك ، فلا يزال بإمكانك الاحتفاظ بنوع آمن. قد تفقد ميزة تسمية الخصائص ، والتي يمكن أن تكون مشكلة إذا كان لديك العديد من الخصائص ، وربما حتى من نفس النوع.

مثال أكثر واقعية: تريد تعيين فرز عمود لـ TreeListView مكون جهة خارجية. يمكنك بدء الفرز من كائن وحدة التحكم ، والذي يستدعي الوظيفة الصحيحة ( SortByColumns ) في العرض ، والذي يستدعي الوظيفة في فئة المجمّع حول مكون الطرف الثالث ، والذي يستدعي مكونات الطرف الثالث المناسبة المهام.

  1. If you define a DTO (dtata transfer object) object:

    // Somewhere around an interface
    class ColumnSortItem
    {
        string Caption { get; set; }
        SortOrder Order { get; set; }
    }
    
    // Other places:
    void SortByColumns(IList pColumnSortItems);
    
  2. Tuples:

    void SortByColumns(IList> pColumnSortItems);
    

لا أقول أن الصفوف هي دائمًا الخيار الأفضل ، ولكن لاحظ أننا اضطررنا فقط إلى إعلان أمر معين وبنية عناصر معينة . لاحظ أنه في هذا المثال الملموس يكون واضحًا ما هو جزء السلسلة من المجموعة وما هو جزء SortOrder.

إضافة: المكالمات الفعلية للوظيفة:

  1. DTO

    controller.SortByColumns(new List() {
        new ColumnSortItem() { Caption = "Record", Order = SortOrder.Ascending },
        new ColumnSortItem() { Caption = "Description", Order = SortOrder.Ascending }
      });
    
  2. Tuple

    controller.SortByColumns(new List>() {
        new Tuple("Record", SortOrder.Ascending),
        new Tuple("Description", SortOrder.Ascending)
      });
    
0
وأضاف
لاحظ أن KeyValuePair سيكون ممكنًا إذا احتوى Tuple على عنصرين فقط ، ولكن هناك عواقب KeyValuePair كونها بنية: dotnetperls.com/tuple-keyvaluepair
وأضاف المؤلف Csaba Toth, مصدر

يبدو أنه موجود لتخزين البيانات مؤقتًا ؛ استخدام مترجم جدا. هذه مناسبات عندما تكون كتابة الفصل الدراسي الخاص بك إما مضيعة للوقت أو لا تستحقها نظرًا لأن وقت حياة البيانات قصير جدًا.

0
وأضاف

Tuple هو بناء مطبوع وغير قابل للتغيير وعام. إنها حاوية مفيدة لتخزين البيانات ذات الصلة بالمفاهيم. فئة بسيطة مع أعضاء معلقين وطرق إضافية هي أكثر فائدة للأشياء الهامة. ولكن يمكن استخدام Tuple لتخزين معلومات متنوعة ذات صلة. يقع Tuple قصيرًا في مجال المعلومات المختبئة. إنها تتفوق على أنها حاوية قصيرة الأجل مفيدة.

0
وأضاف

مجموعة Tuple هي فئة خفيفة الوزن لتجميع عدة عناصر معًا. إنه بديل لتحديد فصل دراسي جديد في أي وقت تريد فيه تجميع عنصرين معًا.

أجده مفيدًا عندما أريد إرجاع عناصر متعددة من طريقة واحدة ، ولكن لا يمكنني استخدام معلمات ref أو out.

0
وأضاف

يعرض .NET Framework 4 فئة System.Tuple لإنشاء كائنات tuple تحتوي على بيانات منظمة. كما يوفر أيضًا فئات عامة للصفوف لدعم المجموعات المكونة من واحد إلى ثمانية مكونات. هنا مثال في C #

var objTupe = new System.Tuple"Mike","Anderson",29000,9999999999);
 Response.Write("Item1 : " + objTupe.Item1);
 Response.Write("
Item2 : " + objTupe.Item2); Response.Write("
Item3 : " + objTupe.Item3); Response.Write("
Item4 : " + objTupe.Item4);
0
وأضاف

يقدم Microsoft .NET 4.0 نوع يسمى Tuple وهو مجموعة ثابتة من البيانات المكتوبة بشكل غير متجانس. مثل صفيف ، يحتوي tuple على حجم ثابت لا يمكن تغييره بمجرد إنشائه. على عكس المصفوفة ، قد يكون كل عنصر في المجموعة نوعًا مختلفًا ، وتكون مجموعة tuple قادرة على ضمان كتابة قوية لكل عنصر. هذا هو حقا في سيناريو وإلا يمكن تحقيقه باستخدام أنواع أو هيكل مخصص.

0
وأضاف
أيضا على عكس المصفوفة ، فإن العناصر الموجودة في Tuple تكون غير قابلة للتغيير (لا يمكنك تغيير قيمتها بعد أن يتم إنشاء رمز Tuple )
وأضاف المؤلف Salmonstrikes, مصدر