Func
প্রতিনিধিদের (অথবা পরিবার Action
যে বিষয়টি জন্য) কিছুই কিন্তু সহজ প্রতিনিধি ধরনের মত ঘোষিত হয়
//.NET 4 and above
public delegate TResult Func<out TResult>()
public delegate TResult Func<in T, out TResult>(T obj)
//.NET 3.5
public delegate TResult Func<T1, T2, TResult>(T1 obj1, T2 obj2)
public delegate TResult Func<T1, T2, T3, TResult>(T1 obj1, T2 obj2, T3 obj3)
ইত্যাদি হিসাবে প্রতিনিধিদের আউট / রেফ প্যারামিটার থাকতে পারে, সুতরাং আপনার ক্ষেত্রে এটি কেবল নিজের দ্বারা কাস্টম বাস্তবায়নের বিষয় হিসাবে অন্য উত্তরগুলি নির্দেশ করেছে। মাইক্রোসফ্ট কেন ডিফল্টরূপে এটি প্যাক করে না, এটির জন্য সংখ্যার সংখ্যার কম সংখ্যার কথা চিন্তা করুন think
delegate TResult Func<T1, T2, TResult>(T1 obj1, T2 obj2)
delegate TResult Func<T1, T2, TResult>(out T1 obj1, T2 obj2)
delegate TResult Func<T1, T2, TResult>(T1 obj1, out T2 obj2)
delegate TResult Func<T1, T2, TResult>(out T1 obj1, out T2 obj2)
মাত্র দুটি পরামিতি জন্য। আমরা স্পর্শও করি নি ref
। এটি আসলে বিকাশকারীদের জন্য জটিল এবং বিভ্রান্তিকর হবে।
T
বিপরীতমুখীV
হিসাবে এবং সমবায়িক হিসাবে চিহ্নিত করা সম্ভব । যাইহোক, একটি প্যারামিটার যেহেতু (output
টাইপ)U
পাস করা হয়েছে রেফারেন্স দ্বারা ,U
সহ- বা contravariant নয় বলে চিহ্নিত করা যেতে পারে এবং "পরিবর্তিত" থাকা আবশ্যক। সুতরাংpublic delegate V MyDelegate<in T, U, out V>(T input, out U output);
আপনি যদি সি # 4 বা তার পরে ব্যবহার করেন তবে বিবেচনা করুন ।