আমি প্রায়শই আমার কোডে নাল প্রচারকারী অপারেটর ব্যবহার করি কারণ এটি আমাকে আরও পাঠযোগ্য কোড দেয়, বিশেষত দীর্ঘ প্রশ্নগুলিতে আমাকে ব্যবহৃত প্রতিটি একক বর্গকে বাতিল করতে হবে না।
নিম্নলিখিত কোডটি একটি সংকলন ত্রুটি ছুঁড়ে ফেলেছে যা আমরা লাম্বডায় নাল প্রচারকারী অপারেটরটি ব্যবহার করতে পারি না।
var cnt = humans.AsQueryable().Count(a => a.House?[0].Price == 5000);
ভূল :
ত্রুটি CS8072 একটি এক্সপ্রেশন ট্রি ল্যাম্বডায় নাল প্রচারকারী অপারেটর নাও থাকতে পারে।
সি # সহজেই অন্য কিছু করতে না পারলে উপরের কোডটি কোডের উপরের কোডটি সহজেই অনুবাদ করতে পারে!
var cnt = humans.AsQueryable().Count(a => a.House != null && a.House[0].Price == 5000);
আমি আগ্রহী কেন সি # কিছু না করে এবং কেবল একটি সংকলক ত্রুটি ছুঁড়ে দেয়?
Foo?.Bar
এর সমান নয়Foo != null ? Foo.Bar : null
কারণFoo
একবার নাল-প্রচারকারী অপারেটরের সাথে মূল্যায়ন করা হয় এবং শর্তসাপেক্ষে দুবার, সুতরাং অনুবাদটি সব ক্ষেত্রেই সঠিক হবে না।