আমি নীচের মতো সি # কোডের বেশ কয়েকটি উদাহরণ পেয়েছি:
public static int Foo(this MyClass arg)
thisএই ক্ষেত্রে কীওয়ার্ডটির অর্থ কী তার একটি ব্যাখ্যা আমি সন্ধান করতে পারিনি । কোন অন্তর্দৃষ্টি?
আমি নীচের মতো সি # কোডের বেশ কয়েকটি উদাহরণ পেয়েছি:
public static int Foo(this MyClass arg)
thisএই ক্ষেত্রে কীওয়ার্ডটির অর্থ কী তার একটি ব্যাখ্যা আমি সন্ধান করতে পারিনি । কোন অন্তর্দৃষ্টি?
উত্তর:
এটি একটি এক্সটেনশন পদ্ধতি । ব্যাখ্যা জন্য এখানে দেখুন ।
এক্সটেনশন পদ্ধতিগুলি বিকাশকারীদের একটি বিদ্যমান সিএলআর টাইপের সর্বজনীন চুক্তিতে নতুন পদ্ধতি যুক্ত করার অনুমতি দেয়, এটি উপ-শ্রেণি না করে বা মূল ধরণের পুনরায় সংকলন না করে। এক্সটেনশন পদ্ধতিগুলি আজ ডাইনামিক ভাষাগুলির মধ্যে জনপ্রিয় "হাঁস টাইপিং" সমর্থনের নমনীয়তার সাথে মিশ্রিত করতে সহায়তা করে জোরালোভাবে টাইপ করা ভাষাগুলির পারফরম্যান্স এবং সময়ের সংকলন।
এক্সটেনশন পদ্ধতিগুলি বিভিন্ন উপকারী দৃশ্যাবলী সক্ষম করে এবং সত্যই শক্তিশালী LINQ ক্যোয়ারী ফ্রেমওয়ার্কটিকে সম্ভব করে তুলতে সহায়তা করে ...
এর অর্থ আপনি কল করতে পারেন
MyClass myClass = new MyClass();
int i = myClass.Foo();
বরং
MyClass myClass = new MyClass();
int i = Foo(myClass);
এটি নীচে বর্ণিত হিসাবে সাবলীল ইন্টারফেসগুলি নির্মাণের অনুমতি দেয় ।
স্কট গু এর উদ্ধৃত ব্লগ পোস্ট এটিকে সুন্দরভাবে ব্যাখ্যা করেছে।
আমার জন্য, প্রশ্নের উত্তরটি সেই পোস্টের নিম্নলিখিত বিবৃতিতে রয়েছে:
উপরে স্ট্যাটিক পদ্ধতিতে টাইপ স্ট্রিংয়ের প্রথম প্যারামিটার আর্গুমেন্টের আগে কীভাবে "এই" কীওয়ার্ড রয়েছে তা নোট করুন। এটি কম্পাইলারকে বলে যে "স্ট্রিং" টাইপের অবজেক্টগুলিতে এই নির্দিষ্ট এক্সটেনশন পদ্ধতিটি যুক্ত করা উচিত। ইসভালিডমেল অ্যাড্রেস () পদ্ধতি প্রয়োগের মধ্যে আমি তারপরে পদ্ধতিটি চালু হবার প্রকৃত স্ট্রিং উদাহরণের সমস্ত জনসাধারণের সম্পত্তি / পদ্ধতি / ইভেন্টগুলিতে অ্যাক্সেস করতে পারি এবং এটি বৈধ ইমেল কিনা তা নির্ভর করে সত্য / মিথ্যা ফিরিয়ে আনতে পারি।
thisপদ্ধতির স্বাক্ষরে কীওয়ার্ডের আসল উদ্দেশ্য কী তা বোঝায় explains অন্যান্য উত্তরগুলি কেবল অসহায়ভাবে বলে "এটি একটি এক্সটেনশন পদ্ধতি।" এই উত্তরটি পড়া না হওয়া পর্যন্ত প্রসারণের পদ্ধতিগুলি কীভাবে প্রসারিত হয় তার সাথে কীভাবে "সংযুক্ত" হয় তা আমি কখনই পুরোপুরি বুঝতে পারি নি। ধন্যবাদ!
প্রীত সংঘের ব্যাখ্যা ছাড়াও:
ইন্টেলিসেন্স নীল তীরের সাহায্যে এক্সটেনশন পদ্ধতিগুলি প্রদর্শন করে (যেমন "সমষ্টি <>" এর সামনে):

তোমার দরকার একটি
using the.namespace.of.the.static.class.with.the.extension.methods;
এক্সটেনশন পদ্ধতিগুলি উপস্থিত হওয়ার জন্য এবং উপলভ্য হওয়ার জন্য, যদি সেগুলি কোড ব্যবহার করে আলাদা আলাদা নামস্থানে থাকে।
তারা এক্সটেনশন পদ্ধতি । সম্পূর্ণ নতুন অনর্গল বিশ্বে আপনাকে স্বাগতম । :)
আমি অন্য দিন কেবল এটি নিজেই শিখেছি: এই কীওয়ার্ডটি সংজ্ঞায়িত করে যে পদ্ধতিটি শ্রেণীর একটি এক্সটেনশন হচ্ছে যা এটি এগিয়ে যায়। সুতরাং আপনার উদাহরণস্বরূপ, মাইক্লাসে ফু নামে একটি নতুন এক্সটেনশন পদ্ধতি থাকবে (যা কোনও পরামিতি গ্রহণ করে না এবং কোনও পূর্বাবস্থায় ফেরত দেয়; এটি অন্য কোনও পাবলিক পদ্ধতির মতো ব্যবহার করা যেতে পারে)।
"এটি" প্যারামিটার তালিকার পরবর্তী শ্রেণিটি প্রসারিত করে
সুতরাং নীচে পদ্ধতিতে স্বাক্ষর "এটি" "স্ট্রিং" প্রসারিত করে। পদ্ধতিতে সাধারণ আর্গুমেন্ট হিসাবে লাইনটি ফাংশনে প্রেরণ করা হয়। পাবলিক স্ট্যাটিক স্ট্রিং [] স্প্লিটসিএসভিলাইন (এই স্ট্রিং লাইন)
উপরের উদাহরণে "এই" শ্রেণিটি "স্ট্রিং" শ্রেণিতে অন্তর্নির্মিত প্রসারিত করছে।