Saturday, October 7, 2017

C# For Beginners , Part - 8 ( Nullable Types )

                 আজকে আমরা  Nullable Types নিয়ে কথা বলবো ।।

সাধারণভাবে , নাল বলতে আমরা কি বুঝি ??? অনেকেই বুঝি , নাল বলতে বুঝি - শূন্য বুঝায় , বাট আসলে ব্যপার'টা কিন্তু তা নয় ।। ধরো , তোমায় একটা ফর্ম পুরণ করতে দিলো , সেখানে - একটা অপশন আছে ,  Are U Married ??  , দুইটি অপশন আছে - "Yes" & "No" | এখন , ধরো - তুমি কোনোটাতেই টিক দিলে না , তাহলে -- ব্যপারটা কি ঘটলো ??? এর মানে কিন্তু , দাড়ালো -- "Null"
এর মানে , সেই বিষয়ে - তোমার কোনো মতামত নেই  ।। এই ঘটনাই -- প্রোগ্রামের মাধ্যমে লিখে ফেলি , চলো ------------------

একটা জিনিস মাথায় রাখা উচিত , সেটা হলো - bool কিন্তু , নন নাল-এবল , বাট একটা  ?  চিহ্ন যোগ করেই , আমরা এটাকে নালেবল টাইপ করতে পারি -------

using System;
 class Program
    {
        static void Main()
        {
            bool? joy = null;
            if(joy==true)
            {
                Console.WriteLine("You are Married");
            }
            else if(joy==false)
            {
                Console.WriteLine("You Are Not Married");
            }
            else
            {
                Console.WriteLine("Not Filled By You");
            }

            Console.ReadKey();
           
        }
    }

আশা করি , নালএবল টাইপ নিয়ে ধারণা ভালোই হলো ।। এখন , আমরা  আরেকটি বিষয় নিয়ে জানার
চেষ্টা করবো ----------------সেটা হলো ,  Null Coalescing Operator (?? )

 

চলো , একটা কোড দেখে আসি আগে ---

using System;
    class Program
    {
        static void Main()
        {
            int? ticketsremaining = null;
            int availabletickets;
            if(ticketsremaining==null)
            {
                 availabletickets = 0;
            }
            else
            {
                 availabletickets = (int)ticketsremaining;
            }
            Console.WriteLine("Available Tickets = {0} ", availabletickets);
            Console.ReadKey();
        }
    }

 এখানে , আমরা  int কে নালএবল টাইপ - এ কনভার্ট করতে ,  ?  চিহ্ন ইউস করেছি ।। আরেকটি জিনিস , আমাদের বুঝতে হবে , নন -নালএবল    কে   নালএবল-এ  কনভার্ট করতে কিন্তু ,

availabletickets = (int)ticketsremaining;  কাস্টিং করেছি ।। এখন , কোড'টা দুই একবার রান করে / পড়ে বোঝার চেষ্টা করো , আমি কি বুঝাতে চেয়েছি ??? এখন নীচের কোড'টি দেখো ---------------


using System;
namespace ConsoleApplicationnew1
{
    class Program
    {
        static void Main()
        {
            int? ticketsremaining = null;
            int availabletickets = ticketsremaining??0;
          
            Console.WriteLine("Available Tickets = {0} ", availabletickets);
            Console.ReadKey();
        }
    }
}

এই কোডের আগেরটা রান করলেও , যা আউটপুট আসবে , এটা রান করালেও - একই আউটপুট আসবে ।। কিন্তু , আমাদের if - else স্টেইট্মেন্ট কষ্ট করে ইউস করতে হলো না । শুধুমাত্র -
int availabletickets = ticketsremaining??0; এই লাইনেই  Null Coalescing Operator (?? ) ব্যবহার করে সবকিছু , এক নিমিষেই করে ফেললাম ।। কিছুটা , টারনারি অপারেটর এর মতো ।

এই লাইনে , যা হচ্ছে - তা হলো , ticketsremaining যদি নাল হয়ে থাকে , তাহলে - ?? এর পরের মান'টা
availabletickets এর সাথে , অ্যাসাইন হবে - অন্যথায় , ticketsremaining এর মান যা আছে , তাই -- availabletickets এর সাথে , অ্যাসাইন হবে । এখানে , টাইপকাস্টিং করার কোনো দরকার হবে না ।।

আশা করি ,  Nullable Types ও  Null Coalescing Operator (?? ) নিয়ে বেসিক ধারণা কিছুটা ক্লিয়ার হয়েছে ।। আজ এইটুকুই ----------------------


No comments:

Post a Comment