অপারেটরস এবং এক্সপ্রেশনস (Operators & Expressions)
অপারেটর কী? (What Are Operators?)
ভ্যারিয়েবলগুলোকে (variables) যদি আপনার কোডের বিশেষ্য (nouns) ভাবা হয়, তবে অপারেটরগুলো হলো ক্রিয়াপদ বা ভার্ব (verbs)। তারা মূলত কোনো কাজ (stuff) করে থাকে — যেমন সংখ্যা যোগ করা, দুটি মানের মধ্যে তুলনা করা, বা একাধিক শর্ত জোড়া লাগানো। এগুলোকে এমন কিছু অ্যাকশন ওয়ার্ড (action words) হিসেবে ভাবতে পারেন, যেগুলো আপনার প্রোগ্রামকে শুধু ডেটা ধরে না রেখে বরং সত্যিই কিছু একটা করার নির্দেশ দেয়।
সি শার্পে (C#) বেশ কয়েকটি পরিবারের অপারেটর রয়েছে, আর এগুলোর বেশিরভাগই আপনি প্রতিদিনের কাজে ব্যবহার করবেন।
অ্যারিথমেটিক বা গাণিতিক অপারেটর — ম্যাথ ক্লাস (Arithmetic Operators — Math Class)
কম্পারিজন এবং লজিক্যাল অপারেটর (Comparison & Logical Operators)
এই অপারেটরগুলো হ্যাঁ-অথবা-না ভিত্তিক প্রশ্ন (yes-or-no questions) করে এবং এর উত্তরে true (সত্য) অথবা false (মিথ্যা) ফেরত দেয়।
==সমান কি না (ডাবল ইকুয়াল বা double equals — সিগেল=এর অর্থ হলো মান অ্যাসাইন করা!)!=সমান নয় কি না<,>,<=,>=— তুলনা করার কাজ করে&&— AND বা এবং (দুটি শর্তই অবশ্যই সত্য হতে হবে)||— OR বা অথবা (যেকোনো একটি শর্ত সত্য হলেই হবে)!— NOT বা না (true ↔ false উল্টে দেয়)
&&-কে একজন কঠোর অভিভাবক হিসেবে ভাবতে পারেন ("তোমাকে একই সাথে রুম পরিষ্কার করতে হবে এবং হোমওয়ার্ক শেষ করতে হবে"), আর ||-কে একজন শান্ত স্বভাবের অভিভাবক হিসেবে ভাবতে পারেন ("যেকোনো একটা করলেই চলবে")।
কম্পারিজন এবং লজিক (Comparisons & Logic)
টার্নারি অপারেটর এবং নাল ট্রিকস (The Ternary Operator & Null Tricks)
টার্নারি অপারেটর (ternary operator) ? : হলো একটি ছোট্ট if/else, যেটিকে এক লাইনের ভেতর গুছিয়ে লেখা যায়। এটি ছোটখাটো সিদ্ধান্ত নেওয়ার ক্ষেত্রে দারুণ কাজ করে:
condition ? valueIfTrue : valueIfFalse
সি শার্পে (C#) নাল-নিরাপত্তা বা null-safety এর জন্য দুটি চমৎকার অপারেটরও রয়েছে:
??— নাল-কয়েলেসিং (null-coalescing): "এই মানটি ব্যবহার করো, অথবা (OR) যদি এটি নাল বা ফাঁকা হয়, তবে ব্যাকআপ হিসেবে রাখা ওই মানটি ব্যবহার করো।"?.— নাল-কন্ডিশনাল (null-conditional): "যদি এই অবজেক্টটি (object) নাল না হয়, তবেই শুধু ওই প্রোপার্টিটি অ্যাক্সেস বা ব্যবহার করো। আর না হলে, আমাকে শুধু একটি নাল (null) দিয়ে দাও।"is— প্যাটার্ন ম্যাচিং (pattern matching): এটি টাইপ ঠিক আছে কিনা তা চেক করে এবং একই সাথে এক ধাপেই এর ভেতরের মানটি বের করে আনতে পারে।
টার্নারি, নাল অপারেটরস এবং প্যাটার্ন ম্যাচিং (Ternary, Null Operators & Pattern Matching)
?? অপারেটরটি নাল (null) থেকে সুরক্ষিত থাকার জন্য আপনার বডিগার্ড হিসেবে কাজ করে। নাল চেক করার জন্য অনেক বড় একটি if/else লেখার বদলে, আপনি শুধু এটি লিখতে পারেন: var name = input ?? "default"; — এক লাইনের কোড, আর কোনো ক্র্যাশ (crash) নেই।