using System;
public class Program
{
public static void Main()
{
int a = 23;
Console.WriteLine(a.ToString());
Console.WriteLine(Convert.ToString(a));
Console.ReadKey();
}
}
এখানে , আমরা একটা স্ট্রিং নিয়েছি - সেটাকে স্ট্রিং-এ কনভার্ট করেছি । তবে দুই পদ্ধতিতে !! একবার ToString() ব্যবহার করে , আরেকবার Convert ক্লাসের ToString() মেথোডে ইন্টিজার ভ্যারিয়েবলকে প্যারামিটার হিসেবে পাস করিয়ে ।। দুই ক্ষেত্রেই , আমরা একই রকম আউটপুট দেখতে পাচ্ছি , আপাতভাবে এর মধ্যে কোনো তফাত মনে হচ্ছে না । কিন্তু এদের ভেতরেও পারথক্য আছে । ।
চলো নিচের কোড দেখে আসি , একটু ---------
using System;
namespace joy
{
public class Program
{
public static void Main()
{
int? a = null;
Console.WriteLine(Convert.ToString(a));
Console.ReadKey();
}
}
}
কোনো , একটা কারণে - মনে করো , আমার ভ্যারিএবলে নাল সেট করা আছে , এখন একে যদি আমি Convert ক্লাসের ToString() মেথোডে পাঠাই , তাহলে - আমাদের কনভার্টেড স্ট্রিং ও কিন্তু , নাল হবে , তাই না ??? কোনো রকম এক্সসেপশন পাবা না ।। কিন্তু , চলো এবার নীচের প্রোগ্রামটা রান করাই !!!
using System;
public class Program
{
public static void Main()
{
int? a = null;
Console.WriteLine(a.ToString());
Console.ReadKey();
}
}
ঠিকঠাক আউটপুট পেলে !! কোনোরকম এরর হবারও কথা নয় , এখন তোমাদের মনে প্রশ্ন আসার কথা যে - পার্থক্য টা কোথায় ???
এবার চলো , একটা ক্লাসের অব্জেক্ট ক্রিয়েট করে এই একই কাজ করি , দেখি কি হয় ???
using System;
namespace joy
{
public class Program
{
public static void Main()
{
Customer a = null;
Console.WriteLine(Convert.ToString(a));
Console.ReadKey();
}
}
public class Customer
{
public string Name { set; get; }
}
}
আমরা শুধু Convert ক্লাস ব্যবহার করে ,করেছি ।। কোনোরকম এরর পাবাও না , যদিও তুমি Customer ক্লাসের রেফারেন্স ভ্যারিয়েবলে null সেট করেছো । । তো চলো , এবার আমরা আরেকভাবে ব্যবহার করি ------
using System;
namespace joy
{
public class Program
{
public static void Main()
{
Customer a = null;
Console.WriteLine(a.ToString());
Console.ReadKey();
}
}
public class Customer
{
public string Name { set; get; }
}
}
রান করিয়ে দেখো , কি হয় ?? আশা করি এরর পাবা !! নীচের মতো ------
সুতরাং বুঝতেই পারছো , এবার পার্থক্য কোথায় ??? যেখানে , Convert.ToString() নাল হ্যান্ডল করতে পারে , সেখানে - ToString() সেটা হ্যান্ডল করতে পারে না ,null reference exception পাবা ।। এটাই এদের ভেতরে মূল পার্থক্য !! তবে যখন তুমি একটা ক্লাসের রেফারেন্স ভ্যারিয়েবল ক্রিয়েট করবে , ঠিক তখনই এরকম হবে , এটা মাথায় রেখো , তাছাড়া দুইটা একইরকম আচরণ করবে কিন্তু ।।
No comments:
Post a Comment