উত্তর:
এটি একটি রূপান্তর অপারেটর । এর অর্থ হল আপনি এই কোডটি লিখতে পারেন:
XmlBase myBase = new XmlBase();
XElement myElement = myBase;
এবং সংকলক অভিযোগ করবে না! রানটাইম এ, রূপান্তরকারী অপারেটর কার্যকর করা হবে - myBase
যুক্তি হিসাবে পাস , এবং XElement
ফলাফল হিসাবে একটি বৈধ ফেরত ।
বিকাশকারী হিসাবে এটি আপনার জন্য সংকলককে বলার একটি উপায়:
"যদিও এগুলি দুটি সম্পূর্ণ অপ্রাসঙ্গিক প্রকারের মতো দেখায়, বাস্তবে এক থেকে অন্যটিতে রূপান্তরিত করার উপায় আছে; কীভাবে এটি করা যায় তার জন্য আমাকে যুক্তিটি পরিচালনা করতে দিন।"
এ ধরনের অন্তর্নিহিত অপারেটর মানে কি রূপান্তর করতে পারেন XmlBase
থেকে XElement
পরোক্ষভাবে।
XmlBase xmlBase = WhatEverGetTheXmlBase();
XElement xelement = xmlBase;
//no explicit convert here like: XElement xelement = (XElement)xmlBase;
XElement xelement = (XElement)xmlBase;
প্রশ্নে এটি বলে static
, এটি অচল থাকতে হবে কি? এটি কি স্থির নয়, তাই এটি তাত্ক্ষণিকভাবে চালু করা যেতে পারে?
আর একটি আকর্ষণীয় ব্যবহার হ'ল (কোন ইউনিট কোন বস্তুটি (এবং সেইজন্য মনোবিহেভিয়ারের উদাহরণ) নাল কিনা তা পরীক্ষা করে দেখার জন্য করেছে):
public static implicit operator bool (CustomClass c)
{
return c != null;
}
নোট করুন যে কোডটি ক্লাসের মধ্যে থাকতে হবে (এক্ষেত্রে কাস্টমক্লাস)। এইভাবে আপনি এই জাতীয় কিছু করতে পারেন:
void Method ()
{
CustomClass c1 = null;
CustomClass c2 = new CustomClass ();
bool b1 = c1; // is false
bool b2 = c2; // is true
if (!c1 && c2)
{
// Do stuff
}
}
স্পষ্টতই সর্বাধিক কুখ্যাত ব্যবহার এটি আপনার ক্লাসগুলির মধ্যে একটিকে আপনার ক্লাসের অন্য একটিতে রূপান্তর করতে ব্যবহার করছে। তবে তাদেরকে মৌলিক ধরণের সাথে ব্যবহার করাও বিবেচনার জন্য মূল্যবান ... এবং আমি এটি খুব কমই উল্লেখ করেছি see
এটি একটি অন্তর্নিহিত রূপান্তর অপারেটর (স্পষ্টত অপারেটরের বিপরীতে, যার (type)
রূপান্তর বাক্য গঠন প্রয়োজন)