यह दो विस्तार के तरीकों का एक सरल उदाहरण overloads हैवैकल्पिक प्रतिनिधियों
public static class Extended
{
public static IEnumerable<int> Even(this List<int> numbers)
{
return numbers.Where(num=> num % 2 == 0);
}
public static IEnumerable<int> Even(this List<int> numbers, Predicate<int> predicate)
{
return numbers.Where(num=> num % 2 == 0 && predicate(num));
}
}
मैं उन्हें एक में विलय करने के लिए, एक प्रतिनिधि की स्थापना वैकल्पिक होने के लिए द्वारा सक्षम होने के लिए करना चाहते हैं:
public static class Extended
{
public static IEnumerable<int> Even(this List<int> numbers, Predicate<in> predicate = alwaysTrue)
{
return numbers.Where(num=> num % 2 == 0 && predicate(num));
}
public static bool alwaysTrue(int a) { return true; }
}
हालांकि, संकलक एक त्रुटि फेंकता है:
Default parameter value for 'predicate' must be a compile-time constant
मैं नहीं दिख रहा है कि मेरे alwaysTrue समारोह स्थिर नहीं है, लेकिन हे, संकलक kno ws बेहतर :)
क्या प्रतिनिधि पैरामीटर वैकल्पिक बनाने का कोई तरीका है?
बहुत दिलचस्प सवाल +1 –