User u = new User();
Type t = typeof(User);
u is User -> returns true
u is t -> compilation error
কিছু পরিবর্তনশীল এভাবে কিছু ধরণের হয় তবে আমি কীভাবে পরীক্ষা করব?
উত্তর:
অন্যান্য উত্তরগুলির মধ্যে উল্লেখযোগ্য বাদ রয়েছে।
is
অপারেটর নেই না পরীক্ষা যদি প্রতীক এর রানটাইম ধরনের ঠিক প্রদত্ত টাইপ; বরং এটি রানটাইম টাইপ প্রদত্ত প্রকারের সাথে সামঞ্জস্যপূর্ণ কিনা তা পরীক্ষা করে দেখুন :
class Animal {}
class Tiger : Animal {}
...
object x = new Tiger();
bool b1 = x is Tiger; // true
bool b2 = x is Animal; // true also! Every tiger is an animal.
কিন্তু টাইপ জন্য চেক পরিচয় জন্য প্রতিফলন চেক সঙ্গে পরিচয় , না সামঞ্জস্য
bool b5 = x.GetType() == typeof(Tiger); // true
bool b6 = x.GetType() == typeof(Animal); // false! even though x is an animal
or with the type variable
bool b7 = t == typeof(Tiger); // true
bool b8 = t == typeof(Animal); // false! even though x is an
যদি এটি আপনি না চান তবে আপনি সম্ভবত ইসসাইনেবলফর্মটি চান:
bool b9 = typeof(Tiger).IsAssignableFrom(x.GetType()); // true
bool b10 = typeof(Animal).IsAssignableFrom(x.GetType()); // true! A variable of type Animal may be assigned a Tiger.
or with the type variable
bool b11 = t.IsAssignableFrom(x.GetType()); // true
bool b12 = t.IsAssignableFrom(x.GetType()); // true! A
t
জন্য typeof(Animal)
। তাই মার্কের উন্নত রূপটি হয়ে যায় t.IsInstanceOfType(x)
।
GetType()
প্রতিটি একক কাঠামোর প্রকারে বিদ্যমান, কারণ এটি বেস object
ধরণের উপর সংজ্ঞায়িত করা হয় । সুতরাং, নিজেই টাইপ নির্বিশেষে, আপনি অন্তর্নিহিতটি ফিরিয়ে দিতে এটি ব্যবহার করতে পারেনType
সুতরাং, আপনাকে যা করতে হবে তা হ'ল:
u.GetType() == t
আপনার উদাহরণের ধরণটি শ্রেণীর ধরণের সমান কিনা তা আপনাকে দেখতে হবে। উদাহরণটির ধরণটি পেতে আপনি GetType()
পদ্ধতিটি ব্যবহার করেন :
u.GetType().Equals(t);
বা
u.GetType.Equals(typeof(User));
এটা করা উচিত। অবশ্যই আপনি যদি পছন্দ করেন তবে আপনার তুলনা করতে '==' ব্যবহার করতে পারেন।
u.GetType.Equals(typeof(User));
t
রয়েছে যা টাইপটি ধারণ করে।
কোনও বস্তু লেখার পরিবর্তে প্রদত্ত প্রকারের ভেরিয়েবলের সাথে সামঞ্জস্যপূর্ণ কিনা তা পরীক্ষা করতে
u is t
আপনার লেখা উচিত
typeof(t).IsInstanceOfType(u)
typeof(Animal).IsInstanceOfType(x)
এর চেয়ে সংক্ষিপ্ত এবং আরও সোজাtypeof(Animal).IsAssignableFrom(x.GetType());
(এবং আপনি যদি পরবর্তীকালের ব্যবহার করেন তবে পুনঃভাগটি পূর্বের ব্যবহারের পরামর্শ দিবে)।