यदि मैं आपको सही ढंग से समझता हूं, तो आप पूछ रहे हैं कि क्या आप एक अज्ञात विधि से किसी सामान्य विधि का संदर्भ दे सकते हैं या नहीं।
उत्तर हाँ है।
उदाहरण के लिए, मान लीजिए कि आप कुछ Func
चाहते हैं जो सॉर्ट किए गए क्रम में IEnumerable<int>
ऑब्जेक्ट के तत्व लौटाता है (ठीक है OrderBy<int, int>
)। आप ऐसा कर सकता है:
Func<IEnumerable<int>, Func<int, int>, IOrderedEnumerable<int>> orderByFunc =
System.Linq.Enumerable.OrderBy<int, int>;
तो फिर तुम बस की तरह इस Func
इस्तेमाल कर सकते हैं किसी भी अन्य:
int[] ints = new int[] { 1, 3, 5, 4, 7, 2, 6, 9, 8 };
// here you're really calling OrderBy<int, int> --
// you've just stored its address in a variable of type Func<...>
foreach (int i in orderByFunc(ints, x => x))
Console.WriteLine(i);
आउटपुट:
1
2
3
4
5
6
7
8
9
दूसरी ओर, यदि आप पूछ रहे हैं कि क्या इस तरह की "जेनेरिक अनाम विधि" बनाना संभव है:
Func<T> getDefault<T> =() => default(T);
फिर यह आपके संदर्भ पर निर्भर करता है। यह एक संदर्भ के भीतर से किया जा सकता है जहां T
पहले से ही सामान्य प्रकार के पैरामीटर के रूप में घोषित किया जाता है - अर्थात्, सामान्य वर्ग या जेनेरिक विधि के भीतर। (फ्रेडी रियोस के जवाब देखें।) इस तरह के एक संदर्भ के बाहर, दुर्भाग्य से, यह अवैध है।
स्रोत
2010-05-14 16:54:14
क्या आप इसका नमूना पोस्ट कर सकते हैं कि आप इसका उपयोग कैसे करना चाहते हैं? मुझे लगता है कि यह बिल्कुल स्पष्ट नहीं है कि आप वर्णन से क्या हासिल करना चाहते हैं। – eglasius