কেউ কি এই 3 অতি গুরুত্বপূর্ণ প্রতিনিধিদের একটি ভাল ব্যাখ্যা (আশা সঙ্গে উদাহরণ সহ) সরবরাহ করতে পারেন:
- সূত্রের বিধেয়
- কর্ম
- func
কেউ কি এই 3 অতি গুরুত্বপূর্ণ প্রতিনিধিদের একটি ভাল ব্যাখ্যা (আশা সঙ্গে উদাহরণ সহ) সরবরাহ করতে পারেন:
উত্তর:
Predicate
: মূলত Func<T, bool>
; প্রশ্ন জিজ্ঞাসা করে "নির্দিষ্ট যুক্তি প্রতিনিধি দ্বারা প্রতিনিধিত্ব করা শর্তটি কি পূরণ করে?" List.FindAll এর মতো জিনিসগুলিতে ব্যবহৃত হয়।
Action
: যুক্তি দিয়ে একটি ক্রিয়া সম্পাদন করুন। খুব সাধারণ উদ্দেশ্য। এটি লিনকু তে খুব বেশি ব্যবহৃত হয় না কারণ এটি মূলত পার্শ্ব-প্রতিক্রিয়াগুলিকে বোঝায়।
Func
: লিনকিউতে ব্যাপকভাবে ব্যবহৃত হয় , সাধারণত আর্গুমেন্টকে রূপান্তর করতে, উদাহরণস্বরূপ একটি সম্পত্তিতে একটি জটিল কাঠামো প্রজেক্ট করে।
অন্যান্য গুরুত্বপূর্ণ প্রতিনিধি:
EventHandler
/ EventHandler<T>
: সমস্ত উইনফোর্মে ব্যবহৃত হয়
Comparison<T>
: লাইক IComparer<T>
কিন্তু ডেলিগেট ফর্মে।
EventHandler/EventHandler<T>
উইনফরমের বাইরেও দেখা যায়।
Action
, Func
এবং Predicate
সমস্ত প্রতিনিধি পরিবারের অন্তর্ভুক্ত।
Action
: ক্রিয়াটি এন ইনপুট পরামিতি নিতে পারে তবে এটি শূন্য হয়।
Func
: ফানক এন ইনপুট প্যারামিটার নিতে পারে তবে এটি সর্বদা প্রদত্ত ধরণের ফলাফল প্রদান করবে। Func<T1,T2,T3,TResult>
এখানে টি 1, টি 2, টি 3 হ'ল ইনপুট পরামিতি এবং ট্রিসল্ট এটির আউটপুট।
Predicate
: ভবিষ্যদ্বাণীত এছাড়াও ফানকের একটি ফর্ম তবে এটি সর্বদা বুল ফিরে আসবে। সহজ কথায় এটি মোড়ক Func<T,bool>
।
জনের উত্তর ছাড়াও, রয়েছে
Converter<TInput, TOutput>
: এটি মূলত Func<TInput, TOutput>
, তবে শব্দার্থবিজ্ঞানের সাথে। তালিকা.কনভার্টএল এবং অ্যারে। কনভার্টএল দ্বারা ব্যবহৃত, কিন্তু ব্যক্তিগতভাবে এটি অন্য কোথাও দেখেনি।উইনফর্মস বিকাশকারীরা মেথডইনভোকার ব্যবহার করতে পারেন; এটি কোনও যুক্তি স্বীকার করে না এবং কোনও ফলাফল দেয় না। এটি অ্যাকশনের পূর্বাভাস দেয় এবং বিআইএনআইভোকে () এট আল একটি টাইপড ডেলিগেট গ্রহণ করার পর থেকে ইউআই থ্রেডে প্রার্থনা করার সময় এখনও ব্যবহৃত হয়; যদিও অ্যাকশন ঠিক তেমনি করবে।
myForm.BeginInvoke((MethodInvoker)delegate
{
MessageBox.Show("Hello, world...");
});
আমি থ্রেডস্টার্ট এবং প্যারামিটারাইজড থ্রেডস্টার্ট সম্পর্কে সচেতন থাকব; আজকাল বেশিরভাগ লোকেরা কোনও অ্যাকশনের বিকল্প নেবে।
প্রিডিকেট, ফানক এবং অ্যাকশন হ'ল। নেট এর অন্তর্নিহিত প্রতিনিধিদের উদাহরণ। এই প্রতিনিধিদের প্রতিটি উদাহরণ নির্দিষ্ট স্বাক্ষর সহ ব্যবহারকারী পদ্ধতিগুলিকে উল্লেখ করতে বা নির্দেশ করতে পারে।
অ্যাকশন প্রতিনিধি - অ্যাকশন প্রতিনিধি উদাহরণগুলি এমন পদ্ধতিগুলির দিকে ইঙ্গিত করতে পারে যা আর্গুমেন্ট গ্রহণ করে এবং বাতিল বাতিল করে।
ফানক প্রতিনিধি - ফানক প্রতিনিধি উদাহরণ পদ্ধতি (গুলি )গুলিতে নির্দেশ করতে পারে যা পরিবর্তনশীল সংখ্যক আর্গুমেন্ট গ্রহণ করে এবং কোনও প্রকার ফেরত দেয়।
ভবিষ্যদ্বাণী - ভবিষ্যদ্বাণীগুলি ফান ডেলিগেটের উদাহরণগুলির মতো এবং তারা এমন পদ্ধতিগুলির দিকে ইঙ্গিত করতে পারে যা পরিবর্তনশীল সংখ্যক আর্গুমেন্ট গ্রহণ করে এবং একটি বিলের প্রকার ফেরত দেয়।
ল্যাম্বদা সহ অ্যাকশন এবং ফানক:
person p = new person();
Action<int, int> mydel = p.add; /*(int a, int b) => { Console.WriteLine(a + b); };*/
Func<string, string> mydel1 = p.conc; /*(string s) => { return "hello" + s; };*/
mydel(2, 3);
string s1= mydel1(" Akhil");
Console.WriteLine(s1);
Console.ReadLine();
ফানক আরও লিনকিউ বন্ধুত্বপূর্ণ, একটি প্যারামিটার হিসাবে পাস হতে পারে। (পয়েন্ট-বিনামূল্যে)
ভবিষ্যদ্বাণী করতে পারে না, আবার জড়িয়ে রাখতে হবে।
Predicate<int> IsPositivePred = i => i > 0;
Func<int,bool> IsPositiveFunc = i => i > 0;
new []{2,-4}.Where(i=>IsPositivePred(i)); //Wrap again
new []{2,-4}.Where(IsPositivePred); //Compile Error
new []{2,-4}.Where(IsPositiveFunc); //Func as Parameter
আর্গুমেন্টগুলি এবং প্রতিটি ধরণের কী পুনরুদ্ধার করা যায় সে সম্পর্কে একটি সাধারণ উদাহরণ
এই ফানক দুটি আন্তঃ যুক্তি গ্রহণ করে একটি পূর্বাবস্থায় ফেরত দেয় un ফানকের সর্বদা রিটার্নের ধরণ থাকে
Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 5));//Print 8
এক্ষেত্রে ফানকের আর্গুমেন্ট নেই তবে স্ট্রিংটি ফিরে আসে
Func<string> print = () => "Hello world";
Console.WriteLine(print());//Print Hello world
এই ক্রিয়াটি দুটি আন্তঃ যুক্তি গ্রহণ করে এবং বাতিল বাতিল করে v
Action<int, int> displayInput = (x, y) => Console.WriteLine("First number is :" + x + " , Second number is "+ y);
displayInput(4, 6); //Print First number is :4 , Second number is :6
এই ভবিষ্যদ্বাণীটি একটি যুক্তি গ্রহণ করে এবং সর্বদা বুল ফেরত দেয় ene
Predicate<int> isPositive = (x) => x > 0;
Console.WriteLine(isPositive(5));//Print True
System.Converter<TInput, TOutput>
, যদিও এটা খুব কমই ব্যবহৃত হচ্ছে।