Saturday, October 7, 2017

C# For Beginners ,Part -9 ( Conversion )

          আজকে , আমরা বিভিন্ন কনভার্সন নিয়ে কথা বলবো ।।

আমাদের কনভার্সন , দুই ধরনের -------------------
                                                    ১)Implicit Conversion
                                                    2)Explicit Conversion
 

আমরা , যখন একটা ইন্টিজার ভ্যালুকে ডাবল/ ফ্লোট -এ কনভার্ট করতে যাবো , তখন কিন্তু , আমাদের টাইপ কাস্টিং করার কোনো প্রয়োজন নেই ।  কারণ , ডাবল / ফ্লোট ইন্টিজারের চেয়ে বড়ো ডেটাটাইপ , তাই ডেটা ও এক্সসেপশন লস হবার কোনো রিস্ক নেই , ( ( ডাবল / ফ্লোট  ইন্টিজার ডেটাটাইপ থেকে বেশী ডেটা হোল্ড করতে পারে )) - তাই আমাদের ইন্টিজার থেকে কখনো
ডাবল / ফ্লোট -এ কনভার্ট করতে গেলে আলাদা করে কাস্টিং করতে হয় না । । নীচে কোড দেখে নেই

using System;
    class Program
    {
        static void Main()
        {

            int a = 19;
            double b = a;
            Console.WriteLine(b);
            Console.ReadKey();
        }
    }

আমরা ,   double b =(int) a;  এইভাবেও লিখতে পারতাম , এবং কোনো প্রকার ভুলও হতো না । কিন্তু , আমাদের ঐভাবে লিখার কোনো দরকারই নেই , কম্পাইলার অটোমেটিক কনভার্সন করে নেয় ।।


                                                    Explicit Conversion


এখন আমরা যখন , ঠিক এরই উলটা কাজটা করে থাকি , মানে ---   ডাবল থেকে ইন্টিজার ডেটাটাইপ  কনভার্ট করতে যাই , তখন কিন্তু , আমাদের - টাইপ কাস্টিং করতে হবে , না হলে হবে না । কারণ , ডাবল , ফ্লোট এর চেয়েও বড়ো ডেটাটাইপ , তাই - এর সব ডেটা ও এক্সসেপশন ইন্টিজার হোল্ড করতে পারবে না , লস হয়ে যাবে - তাই , এখানে , আমাদের কাস্টিং করতে হয় ।। যেমন, একটা দশমিক  নাম্বার 2.65465 , এর দশমিক এর পরের ফ্র্যাকশনাল ভ্যালু'গুলো কখনোই ইন্টিজার হোল্ড করতে পারবে না , সো -- ডেটা লস হয়ে যাবে .। চলো , আমরা একটা উদাহরণ দেখে আসি -------

using System;
    class Program
    {
        static void Main()
        {

            double a = 19.47;
            int b = (int)a;
            Console.WriteLine(b);
            Console.ReadKey();
        }
    }

এখন , আমরা শুধু কাস্টিং করেই নয় , কনভার্ট ক্লাস ব্যবহার করেও -- এই কাজগুলি করতে পারি
চলো , দেখে আসি

using System;
    class Program
    {
        static void Main()
        {

            double a = 19.47;
            int b = Convert.ToInt16(a);
            Console.WriteLine(b);
            Console.ReadKey();
        }
    }


 এখন আমরা স্ট্রিং থেকে , কনভার্ট করা নিয়ে আলোচনা করবো , ধরো - তোমায় একটা নাম্বার দেয়া আছে , স্ট্রিং আকারে । তাহলে , ইন্টিজার-এ কনভার্ট করবে কিভাবে ???? নীচের কোড দেখো --

using System;
   class Program
    {
        static void Main()
        {

            string a = "123";
            int x = int.Parse(a);
            Console.WriteLine(x);
            Console.ReadKey();
        }
    }

এখানে আমরা ,  Parse Method ইউস করেছি , যার রিটার্ন টাইপ ইন্টিজার ।। এখানে , আমরা
int x = Convert.ToInt16(a); ইউস করতে পারতাম , সমস্যা হতো না - কিন্তু টাইপ কাস্টিং ইউস করতে পারবো না ।। কিন্তু , যদি স্ট্রিং'টি ক্যারেক্টার ও ডিজিটের মিশ্রণে থাকে - তাহলে , কি হবে ??? তখন কিন্তু আমাদের  Parse Method কাজ করবে না ।। আমাদের তখন , ট্রাই পারস ইউজ করতে হবে । চলো দেখে নেই ------------------------

using System;
    class Program
    {
        static void Main()
        {

            string a = "123T";
            int x = 0;

            bool possible = int.TryParse(a,out x);

            if(possible==true)
            {
                Console.WriteLine("Possible & Value is {0}", x);
            }
            else
            {
                Console.WriteLine("Impossible");
            }
          
            Console.ReadKey();
        }
    }

TryParse মেথড এর রিটার্ন টাইপ কিন্তু বুলিয়ান, সেটা আমাদের মনে রাখতে হবে ।।তো , এখানে এই মেথড , প্রথমে -- string a কে ইন্টিজারে কনভার্ট করার ট্রাই করবে , যদি না হয় , তাহলে false  রিটার্ন টাইপ , আর যদি সম্ভব হয় - তাহলে সেটা x এর সাথে অ্যাসাইন করে দিবে ।।  তো , এইরকম নিজে নিজে কোড লিখে রান করো , তাহলে - বিষয়গুলি আরো ক্লিয়ার হবে । আজ এইটুকুই ---------------



















No comments:

Post a Comment