এটি এক্সটেনশন পদ্ধতিগুলি ঘোষণা করার সিনট্যাক্স, সি # 3.0 এর একটি নতুন বৈশিষ্ট্য।
একটি এক্সটেনশন পদ্ধতি হ'ল পার্ট কোড, পার্ট সংকলক "ম্যাজিক", যেখানে ভিজ্যুয়াল স্টুডিওতে ইন্টেলিসেন্সের সাহায্যে সংকলক এটি দেখায় যে আপনার এক্সটেনশন পদ্ধতিটি আসলে প্রশ্নে থাকা বস্তুটিতে একটি উদাহরণ পদ্ধতি হিসাবে উপলব্ধ।
আমাকে একটি উদাহরণ দিতে দাও।
স্ট্রিং ক্লাসে এমন কোনও পদ্ধতি নেই যার নাম গোব্বলগোবল, সুতরাং আসুন একটি এক্সটেনশন পদ্ধতি তৈরি করুন:
public static class StringExtensions
{
public static void GobbleGobble(this string s)
{
Console.Out.WriteLine("Gobble Gobble, " + s);
}
}
শ্রেণীর নামটি কেবল আমার নামকরণের কনভেনশন, এটির মতো নামকরণের প্রয়োজন নেই, তবে পদ্ধতি হিসাবে এটি স্থির থাকতে হবে।
উপরের পদ্ধতিটি ঘোষণার পরে, আপনি ভিজ্যুয়াল স্টুডিওতে এটি টাইপ করতে পারেন:
String s = "Turkey Baster!";
s.
বিন্দুর পরে, ইন্টেলিজেন্সের জন্য অপেক্ষা করুন, এবং লক্ষ্য করুন যে সেখানে একটি গাবলগোবল পদ্ধতি রয়েছে, কোডটি এইভাবে সম্পূর্ণ করুন:
String s = "Turkey Baster!";
s.GobbleGobble();
গুরুত্বপূর্ণ : ক্লাসটি যেখানে এক্সটেনশন পদ্ধতি হিসাবে ঘোষিত হয়েছে তা পদ্ধতিটি দেখানোর জন্য ইন্টেলিসেন্সের জন্য বর্ধিত সংকলক এবং ইন্টেলিসেন্স প্রসেসরের অবশ্যই উপলব্ধ। যদি আপনি নিজেই গোব্বলগোবলে টাইপ করেন এবং Ctrl+ .শর্টকাট ব্যবহার করেন তবে এটি আপনাকে ফাইলটিতে ডাইরেক্টিভগুলি ব্যবহার করে সঠিকভাবে পেতে সহায়তা করবে না।
লক্ষ্য করুন যে পদ্ধতিটির প্যারামিটারটি অদৃশ্য হয়ে গেছে। সংকলকটি নীরবে গুরুত্বপূর্ণ বিটগুলির চারপাশে চলে যাবে, যা হ'ল:
String s = "Turkey Baster!";
s.GobbleGobble();
^ ^
| +-- the compiler will find this in the StringExtensions class
|
+-- will be used as the first parameter to the method
সুতরাং, উপরোক্ত কোডটি সংকলক দ্বারা এটিতে রূপান্তরিত হবে:
String s = "Turkey Baster!";
StringExtensions.GobbleGobble(s);
সুতরাং কল-টাইমে, এটি সম্পর্কে যাদুকর কিছুই নেই, এটি কেবল একটি স্ট্যাটিক পদ্ধতিতে কল।
মনে রাখবেন যে যদি আপনার এক্সটেনশন পদ্ধতিটি একাধিক প্যারামিটার ঘোষণা করে তবে কেবল প্রথমটি this
সংশোধনকারীকে সমর্থন করে এবং বাকিটি সাধারণভাবে পদ্ধতি কলের অংশ হিসাবে নির্দিষ্ট করতে হবে:
public static void GobbleGobble(this string value, string extra)
{ | |
... | |
} | |
| |
+--------------------------------------------+ |
| |
v |
s.GobbleGobble("extra goes here"); |
^ |
| |
+-----------------------------------+
লিনকের কারণে কিছু অংশে এক্সটেনশান পদ্ধতি যুক্ত করা হয়েছিল, যেখানে সি # এর লিনক সিনট্যাক্স খেলতে থাকা বস্তুর জন্য যথাযথভাবে নামকরণের এক্সটেনশন পদ্ধতিগুলি সন্ধান করবে, যার অর্থ আপনি সঠিক প্রসারকে ঘোষণা করে কোনও ধরনের শ্রেণিতে লিনক-সমর্থন "পরিচয়" করতে পারবেন পদ্ধতি। অবশ্যই, পূর্ণ লিনক সমর্থন অনেক কাজ, তবে এটি সম্ভব।
এছাড়াও, নিজের দ্বারা বর্ধিতকরণ পদ্ধতিগুলি সত্যিই দরকারী, তাই এটি পড়ুন।
এখানে কয়েকটি লিঙ্ক রয়েছে: