উত্তর:
এটি কেবলমাত্র সি # 8 এর খালি সম্পত্তির প্যাটার্ন, যার অর্থ মান নেই null
। এটি কোনও মান ধরণের বা রেফারেন্সের ধরণের সাথে মেলে। পানাজিওটিস কানভোস মন্তব্যগুলিতে যেমন মন্তব্য করেছেন, value is object
এটি দীর্ঘকাল ধরে সি # তে থাকা ভাল পুরানো চেকের সমান ।
সাধারণত আপনি যদি কোনও সম্পত্তি নির্দিষ্ট করে থাকেন তবে তা মিলবে কি না। এই রহস্যজনক উদাহরণ চিত্রিত করে যে:
if (value is { Length: 2 })
{
// matches any object that isn't `null` and has a property set to a length of 2
}
সম্পত্তির নিদর্শনগুলি সর্বোত্তমভাবে কাজ করে এবং switch
প্রকাশের মতো ক্ষেত্রে অন্যান্য নিদর্শনগুলির সাথে তুলনা করার সময় সর্বাধিক স্পষ্ট হয় ।
s
নিঃসন্দেহে নাল না। is {}
শর্টহ্যান্ড এর জন্য is object
এবং স্ট্রিংগুলি আপত্তিতে কাস্ট করা যেতে পারে।
!
, !!
, ?
এবং ??
আগে ও পরে বৈশিষ্ট্য ভিন্ন জিনিস মানে। সিনট্যাকটিক চিনি কখন শেষ হবে?
value != null
?
ড্যানিয়েলের উত্তরটি সঠিক হলেও, আমি মনে করি যে আপনি কেন খালি সম্পত্তির প্যাটার্ন ব্যবহার করতে পারেন তা নিয়ে কিছু প্রসঙ্গ যুক্ত করা কার্যকর হতে পারে । এই উদাহরণস্বরূপ নিয়ন্ত্রক পদ্ধতিটি বিবেচনা করুন যা কিছু বৈধতা সম্পন্ন করা দরকার:
public async Task<IActionResult> Update(string id, ...)
{
if (ValidateId(id) is { } invalid)
return invalid;
...
}
উপরের দিকে, ValidateId()
নাল বা একটি উদাহরণ ফিরে আসতে পারে BadObjectRequestResult
। যদি প্রাক্তনটিকে ফিরিয়ে দেওয়া হয় তবে বৈধতা সফল হয় এবং এর বাকী অংশে চলে যায় Update
। যদি পরবর্তীটি ফিরে আসে is {}
তবে সত্য (অর্থাত্ অবশ্যই এর উদাহরণটি BadObjectRequestResult
একটি object
), এবং বৈধতা ব্যর্থ হয়।
সুন্দরভাবে, এর মধ্যে আমরা একটি পরিবর্তনশীল নামও সরবরাহ করেছি invalid
, যা আমরা অবিলম্বে ফিরে আসতে পারি। তা ছাড়া আমাদের আরও ভার্বোজ কোডের দরকার হয়।
public async Task<IActionResult> Update(string id, ...)
{
var invalid = ValidateId(id);
if (invalid != null)
return invalid;
...
}
একটিতে আরও পঠনযোগ্য বা অন্যটি পাঠকের উপর নির্ভরশীল, খালি সম্পত্তির প্যাটার্নটি ব্যবহার করার একটি উপায় আমি কেবল উপস্থাপন করেছি।
is object invalid
is {} invalid
IActionResult
প্রয়োজন (ভাল প্রযুক্তিগতভাবে Task<IActionResult>
)। আমরা যদি আপনার স্টাইলের সাথে যাই if
তবে এর একই ফল রয়েছে তবে invalid
এটি একটি object
সংকলন হবে না।