আজকে , আমরা বিভিন্ন কনভার্সন নিয়ে কথা বলবো ।।
আমাদের কনভার্সন , দুই ধরনের -------------------
১)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 এর সাথে অ্যাসাইন করে দিবে ।। তো , এইরকম নিজে নিজে কোড লিখে রান করো , তাহলে - বিষয়গুলি আরো ক্লিয়ার হবে । আজ এইটুকুই ---------------
আমাদের কনভার্সন , দুই ধরনের -------------------
১)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