हां, Action
के अलग-अलग ओवरलोड हैं जो इनपुट पैरामीटर की एक अलग संख्या लेते हैं और void
रिटर्न प्रकार रखते हैं।
Action public delegate void Action()
Action<T> public delegate void Action<T>(T obj)
Action<T1,T2> public delegate void Action<T1,T2>(T1 arg1, T2 arg2)
Action<T1,T2,T3> public delegate void Action<T1,T2,T3>(T1 arg1, T2 arg2, T3 arg3)
...
पहली पंक्ति वह है जिसे आप ढूंढ रहे हैं।
नए फ्रेमवर्क संस्करणों ने और भी तर्क के साथ अधिभार जोड़ा है। तर्कों की अधिकतम संख्या:
- .NET फ्रेमवर्क 2.0:
- .NET फ्रेमवर्क 3.5:
- .NET फ्रेमवर्क 4।0:
- सिल्वरलाइट:
क्रिया हमेशा एक void
वापसी प्रकार। एक void
रिटर्न प्रकार की आवश्यकता नहीं है और सामान्य प्रकार पैरामीटर के रूप में निर्दिष्ट नहीं किया जा सकता है। इसके विपरीत, Func
प्रतिनिधियों "असली" वापसी प्रकार को परिभाषित और हमेशा वापसी प्रकार के लिए कम से कम एक सामान्य प्रकार पैरामीटर है:
Func<TResult> public delegate TResult Func<TResult>()
Func<T,TResult> public delegate TResult Func<T,TResult>(T arg)
Func<T1,T2,TResult> public delegate TResult Func<T1,T2,TResult>(T1 arg1, T2 arg2)
...
.NET फ्रेमवर्क 4.0 सामान्य प्रकार के in
और out
संशोधक जोड़ा गया है contravariance और covariance के लिए पैरामीटर। देखें: Covariance and Contravariance in Generics। उदाहरण:
public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2)
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2)
@Anthony Pegram: लेकिन मैं एक कार्रवाई में एक प्रकार में भरने की जरूरत है और शून्य की संभावना नहीं है (मैं अपने प्रश्न संपादित करेंगे, मैं एक गलती की है)। –