كيف يمكنني تطبيق خوارزمية مطابقة باستخدام المسندات؟

StackOverflow https://stackoverflow.com/questions/1297033

  •  18-09-2019
  •  | 
  •  

سؤال

أفهم كيفية استخدام المندوبين وأنا بخير مع تعبيرات Lambda للاستفادة من المسندات. لقد جئت إلى حد ما أرغب فيه في تنفيذ طريقة تستخدم المسند كوسيطة ولا يمكنك معرفة كيفية الرجوع إلى المسند للعثور على المباريات في مجموعتي:

private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match)
{
    foreach (T item in collection)
    {
        //So how do I reference match to return the matching item?
    }
    return default(T);
}

أريد بعد ذلك الرجوع إلى هذا باستخدام شيء أقرب إلى:

ICollection<MyTestClass> receivedList = //Some list I've received from somewhere else
MyTestClass UsefulItem = FindInCollection<MyTestClass>(receivedList, i => i.SomeField = "TheMatchingData");

إذا كان بإمكان أي شخص أن يقدم لي تفسيرا أو أشير إلى إشارة بخصوص تنفيذ المسندات، فأنا أقدر ذلك. يبدو أن الوثائق هناك جميعا تتعلق بمرور المسندات (التي يمكنني القيام بها على ما يرام)، وليس في الواقع تنفيذ الوظيفة التي تستخدمها ...

شكرا

هل كانت مفيدة؟

المحلول

private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match)
{
    foreach (T item in collection)
    {
        if (match(item))
            return item;
    }
    return default(T);
}

أنت فقط تستخدم المسند مثل أي مندوب آخر. إنها في الأساس طريقة يمكنك الاتصال بأي حجة من النوع T، والتي ستعود إلى True.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top