উত্তর:
সোজা কথায় এটি জেনেরিক প্যারামিটারকে ক্লাসে সীমাবদ্ধ করছে (বা আরও নির্দিষ্টভাবে একটি রেফারেন্স টাইপ যা কোনও শ্রেণি, ইন্টারফেস, প্রতিনিধি বা অ্যারের প্রকার হতে পারে)।
আরও তথ্যের জন্য এই এমএসডিএন নিবন্ধটি দেখুন ।
এটি একটি জেনেরিক ধরণের সীমাবদ্ধতা । এক্ষেত্রে এর অর্থ হ'ল জেনেরিক টাইপটি T
একটি রেফারেন্স টাইপ (শ্রেণি, ইন্টারফেস, প্রতিনিধি বা অ্যারে প্রকার) হতে হবে।
এটি একটি ধরণের বাধা T
, উল্লেখ করে যে এটি অবশ্যই একটি শ্রেণি হতে হবে।
where
দফা অন্য ধরনের সীমাবদ্ধতা, যেমন নির্দিষ্ট করতে ব্যবহার করা যেতে পারে:
where T : struct // T must be a struct
where T : new() // T must have a default parameterless constructor
where T : IComparable // T must implement the IComparable interface
আরো তথ্যের জন্য, উপর দুটিই MSDN এর পাতা খুঁজে বার করো where
দফা , অথবা জেনেরিক প্যারামিটার সীমাবদ্ধতার ।
where T : class, IComparable, new()
পরিমিত যে T
করতে রেফারেন্স ধরনের । আপনি সেখানে মান ধরণের ( struct
গুলি এবং আদিম প্রকার বাদে string
) রাখতে পারবেন না।
where T: class
আক্ষরিক অর্থ যে T has to be a class
। এটি কোনও রেফারেন্স টাইপ হতে পারে। এখন যখনই কোনও কোড আপনার DoThis<T>()
পদ্ধতিতে কল করে তবে এটি অবশ্যই টি প্রতিস্থাপনের জন্য একটি শ্রেণি সরবরাহ করবে । উদাহরণস্বরূপ যদি আমি আপনার DoThis<T>()
পদ্ধতিটি কল করতে পারি তবে আমাকে নীচের মতো এটি কল করতে হবে:
DoThis<MyClass>();
যদি আপনার মতবাদগুলি নিম্নলিখিতগুলির মতো হয়:
public IList<T> DoThis<T>() where T : class
{
T variablename = new T();
// other uses of T as a type
}
তারপরে যেখানে কখনও আপনার পদ্ধতিতে টি উপস্থিত হয় এটি MyClass দ্বারা প্রতিস্থাপিত হবে। সুতরাং সংকলক কল করে এমন চূড়ান্ত পদ্ধতিটি নীচের মতো দেখাবে:
public IList<MyClass> DoThis<MyClass>()
{
MyClass variablename= new MyClass();
//other uses of MyClass as a type
// all occurences of T will similarly be replace by MyClass
}
new T()
দিয়ে সম্ভব নয় where T : class
। where T: new()
এটি করার অনুমতি দেওয়ার জন্য আপনাকে নির্দিষ্ট করতে হবে।
একে টাইপ প্যারামিটার সীমাবদ্ধতা বলা হয়। কার্যকরভাবে এটি টাইপ টি কী হতে পারে তা সীমাবদ্ধ করে।
প্রকারের যুক্তিটি অবশ্যই একটি রেফারেন্স টাইপ হতে হবে; এটি কোনও শ্রেণি, ইন্টারফেস, প্রতিনিধি বা অ্যারে প্রকারের ক্ষেত্রেও প্রযোজ্য।
প্রকারের প্যারামিটারগুলিতে সীমাবদ্ধতা (সি # প্রোগ্রামিং গাইড)
এখানে টি ক্লাসকে বোঝায় t এটি একটি রেফারেন্স টাইপ হতে পারে।
'টি' একটি জেনেরিক ধরণের প্রতিনিধিত্ব করে। এর অর্থ এটি যে কোনও ধরণের শ্রেণি গ্রহণ করতে পারে। নিম্নলিখিত নিবন্ধটি সাহায্য করতে পারে:
http://www.15seconds.com/issue/031024.htm