কনভার্ট.টস্ট্রিং () এবং .ToString () এর মধ্যে পার্থক্য


158

মধ্যে পার্থক্য কি Convert.ToString()এবং .ToString()?

আমি অনলাইনে অনেক পার্থক্য খুঁজে পেয়েছি, তবে প্রধান পার্থক্য কী?


7
আপনি বলছেন যে ওয়েবে আপনি অনেক পার্থক্য পেয়েছেন এবং পরে আপনি জিজ্ঞাসা করেছেন এটি কেবলমাত্র এই নির্দিষ্ট কারণে? ওয়েবে আপনি আর কি খুঁজে পেয়েছেন?
রায়ান

3
কনভার্ট.টোস্ট্রিং () এর একটি ওভারলোড রয়েছে যা কালচারইনফো ব্যবহার করতে দেয়, যখন .ToString () এ এরকম ওভারলোড নেই।
আর্টিমিক্স

উত্তর:


232

Convert.ToString()হ্যান্ডলগুলি null, যখন ToString()না।


3
ভাল .. এই নির্দিষ্ট কারণে তারা কেবল ব্যবহার করছে। দুটি পদ্ধতি?
টিনটিন

এছাড়াও, আধা সম্পর্কিত আরো বিস্তারিত জন্য এই উত্তরটি দেখুন: stackoverflow.com/questions/496096/...
JYelton

জাস্টডেকম্পাইল / রিফ্লেক্টর ব্যবহার করে পার্থক্য সম্পর্কে আরও তথ্য: kodefuguru.com/post/2011/06/14/…
ইউবিকুইটি

5
আপনি কি nullএকটি খালি স্ট্রিং ফিরে আসতে চান বা একটি ব্যতিক্রম ছুঁড়তে চান? এটি একরকম ascastালাই এবং ব্যবহারের মধ্যে পার্থক্যের মতো : নীরব রূপান্তর।
স্টাইফেল

@ ইউবিকুইটি: লিঙ্কটি নষ্ট হয়েছে
hdghmen

64

ToString()কোনও বস্তুতে কল করা অনুমান করে যে বস্তুটি নাল নয় (যেহেতু কোনও বস্তুর উপর একটি উদাহরণ পদ্ধতি কল করার প্রয়োজন রয়েছে)। Convert.ToString(obj)অবজেক্ট অনুমান করার দরকার নেই নাল (যেমন বলা যায় এর রূপান্তরের বর্গ উপর একটি স্ট্যাটিক পদ্ধতি), কিন্তু এর পরিবর্তে ফিরে আসবে নয় String.Emptyযদি এটা হয় নাল।


var আরগ = অনুরোধ.প্যারামস.গেট ("__ EVENTARGUMENT"); স্ট্রিং _আরগ = রূপান্তর o টোস্ট্রিং (আরজি); _আরজি স্ট্রিং পুনরুদ্ধার করছে না ar কেন?
vML19

2
@ নীলা আপনি মন্তব্য করার পরিবর্তে অন্য প্রশ্নটি জিজ্ঞাসা করতে চাইতে পারেন। আমার প্রথম প্রশ্নটি হ'ল আরগটি বাতিল হয়ে গেলে কী ফিরে আসে ? আমার প্রথম চিন্তাটি হ'ল "আরগ" আসলে "স্ট্রিং" টাইপের টাইপ, সুতরাং আপনি কনভার্ট.ওস্ট্রিং (...) এর ওভারলোডকে কল করছেন, এটি আপনাকে যা পাস করবে কেবল তা ফিরিয়ে দেয়। এই আলোচনাটি পদ্ধতির "অবজেক্ট" ওভারলোডের ক্ষেত্রে।
ক্রিস দ্বোয়ার

4
@ রোশে হ্যাঁ, আমি এটুকু পেয়েছি। যুক্তি থাকলে Convert.ToString(string value)ফিরে আসে । যুক্তি থাকলে ফিরে আসে । nullnullConvert.ToString(object value)String.Emptynull
টিম গুডম্যান

22

হ্যান্ডলিং nullমানগুলি সম্পর্কে অন্যান্য উত্তরের পাশাপাশি , কলিং বেসের আগে Convert.ToStringব্যবহারের চেষ্টা করে IFormattableএবং IConvertibleইন্টারফেসগুলি Object.ToString

উদাহরণ:

class FormattableType : IFormattable
{
    private double value = 0.42;

    public string ToString(string format, IFormatProvider formatProvider)
    {
        if (formatProvider == null)
        {
            // ... using some IOC-containers
            // ... or using CultureInfo.CurrentCulture / Thread.CurrentThread.CurrentCulture
            formatProvider = CultureInfo.InvariantCulture;
        }

        // ... doing things with format
        return value.ToString(formatProvider);
    }

    public override string ToString()
    {
        return value.ToString();
    }
}

ফলাফল:

Convert.ToString(new FormattableType()); // 0.42
new FormattableType().ToString();        // 0,42

1
এটি সঠিক উত্তরে যুক্ত করা উচিত কারণ এটি বেশ গুরুত্বপূর্ণ তথ্য।
সান্থোস

2
যেমন একটি পরিপূরক - রেফারেন্স উত্স উপর ভিত্তি করে IConvertibleঅগ্রাধিকার নেয় IFormattable, যা পরিবর্তে Object.ToString()বাস্তবায়নের চেয়ে অগ্রাধিকার নেয় ।
GRx70

11

এই উদাহরণের মাধ্যমে পার্থক্যটি বুঝতে দিন:

int i= 0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));

আমরা পূর্ণসংখ্যা রূপান্তর করতে পারেন iব্যবহার i.ToString ()বা Convert.ToString। তাহলে পার্থক্য কী?

তাদের মধ্যে মূল পার্থক্যটি হ'ল Convertফাংশনটি NULLS পরিচালনা করে যখন i.ToString ()না; এটি একটি নাল রেফারেন্স ব্যতিক্রম ত্রুটি নিক্ষেপ করবে। সুতরাং ব্যবহার করার মতো ভাল কোডিং অনুশীলন convertসর্বদা নিরাপদ।


11
আপনার উদাহরণটি কিছুটা অবৈধ, কারণ কোনও
দিনই

6

আপনি একটি ক্লাস তৈরি করতে পারেন এবং যে toStringকোনও কিছু করতে চাইলে পদ্ধতিটি ওভাররাইড করতে পারেন।

উদাহরণস্বরূপ- আপনি একটি ক্লাস "মাইমাইল" তৈরি করতে পারেন toStringএবং বর্তমান বস্তুটি লেখার পরিবর্তে কোনও ইমেল প্রেরণ করতে বা অন্য কোনও ক্রিয়াকলাপ করতে পদ্ধতিটিকে ওভাররাইড করতে পারেন ।

Convert.toStringতার সমতুল্য স্ট্রিং প্রতিনিধিত্বের নির্দিষ্ট করা মানের পরিবর্তন করে।


2
রূপান্তর করুন.টোস্ট্রিং আসলে একটি নিরাপদ পদ্ধতি যা নাল পরীক্ষা করে এবং যদি মানটি শূন্য না হয় তবে এটি কেবল এতে স্ট্রিং পদ্ধতি কল করে। সুতরাং যে কোনও ক্ষেত্রে, যদি আপনার টুস্ট্রিং পদ্ধতি ওভাররাইড করে থাকে তবে আপনার ওভারডেন টোস্ট্রিং পদ্ধতিটি কল করা হবে।
জাফরযৌসফি

এবং এই নাল সুরক্ষাটি কেবল তখনই সহায়তা করে যদি আপনি ক্লাসের সাথে ডিল করছেন। মানের ধরণগুলি বাতিল হতে পারে না এবং তাই আমরা সেগুলিতে নিরাপদে ToString পদ্ধতিতে কল করতে পারি।
জাফরযৌসফি

5
object o=null;
string s;
s=o.toString();
//returns a null reference exception for string  s.

string str=convert.tostring(o);
//returns an empty string for string str and does not throw an exception.,it's 
//better to use convert.tostring() for good coding

4

নাল পরিচালনা করা ব্যতীত পদ্ধতিগুলি "মূলত" একই ।

Pen pen = null; 
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException

এমএসডিএন থেকে:
রূপান্তর করুন.টোস্ট্রিং পদ্ধতি

নির্দিষ্ট মানটিকে তার সমতুল্য স্ট্রিং উপস্থাপনায় রূপান্তর করে।

Object.ToString

একটি স্ট্রিং প্রদান করে যা বর্তমান অবজেক্টকে উপস্থাপন করে।


"কিছু ছাপবে না"? কিছুই কি না? null, ""বা "null"?
ওয়েস্টন

3

ইন Convert.ToString(), কনভার্টটি কোনও NULLমান হ্যান্ডেল করে না তবে .ToString()এতে কোনও NULLমান এবং একটি NULLরেফারেন্স ব্যতিক্রম ত্রুটি পরিচালনা করে না । সুতরাং এটি ব্যবহার করা ভাল অনুশীলনে রয়েছে Convert.ToString()


3

কোড প্রেমীদের জন্য এটি সেরা উত্তর।

    .............. Un Safe code ...................................
    Try
        ' In this code we will get  "Object reference not set to an instance of an object." exception
        Dim a As Object
        a = Nothing
        a.ToString()
    Catch ex As NullReferenceException
        Response.Write(ex.Message)
    End Try


    '............... it is a safe code..............................
    Dim b As Object
    b = Nothing
    Convert.ToString(b)

1
আমি আপনার উত্তরে সন্তুষ্ট সুতরাং +1। ধন্যবাদ.
অশোক কুমার

3

আমি @ রায়ান এর উত্তরের সাথে একমত যাইহোক, এই উদ্দেশ্যে সি # 6.0 দিয়ে শুরু করে আপনি ব্যবহার করতে পারেন:

someString?.ToString() ?? string.Empty;

অথবা

$"{someString}"; // I do not recommend this approach, although this is the most concise option.

পরিবর্তে

Convert.ToString(someString);

2

ToString()নাল মানগুলি হ্যান্ডেল করতে পারে না এবং convert.ToString()মানগুলি যা শূন্য হয় তা পরিচালনা করতে পারে, তাই যখন আপনি নিজের সিস্টেমটি নাল মান ব্যবহার করতে চান convert.ToString()


2

Convert.ToString(strName)নাল-সক্ষম মানগুলি strName.Tostring()পরিচালনা করবে এবং নাল মান হ্যান্ডেল করবে না এবং একটি ব্যতিক্রম ছুঁড়ে ফেলবে।

তাই এটি উত্তম ব্যবহার করতে Convert.ToString()তারপর.ToString();


2
ToString() Vs Convert.ToString()

সাদৃশ্য: -

উভয়ই একটি নির্দিষ্ট প্রকারকে স্ট্রিং অর্থাৎ ইন্টি টু স্ট্রিং, ফ্লোটে স্ট্রিংয়ে বা কোনও বস্তুকে স্ট্রিংয়ে রূপান্তর করতে ব্যবহৃত হয়।

পার্থক্য:

ToString()Convert.ToString()নাল মান হ্যান্ডেল করতে ক্ষেত্রে ক্ষেত্রে নাল হ্যান্ডেল করতে পারবেন না ।

উদাহরণ:

namespace Marcus
{
    class Employee
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    class Startup
    {
        public static void Main()
        {
            Employee e = new Employee();
            e = null;

            string s = e.ToString(); // This will throw an null exception
            s = Convert.ToString(e); // This will throw null exception but it will be automatically handled by Convert.ToString() and exception will not be shown on command window.
        }
    }
}

Convert.ToStringহ্যান্ডেল না Null Exception। এটি কেবল করুন:return value == null ? string.Empty : value.ToString()
ফ্যাবিও

0

উভয় পদ্ধতি বোঝার জন্য আসুন একটি উদাহরণ নেওয়া যাক:

int i =0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i)); 

এখানে উভয় পদ্ধতিই স্ট্রিংকে রূপান্তর করতে ব্যবহৃত হয় তবে তাদের মধ্যে মূল পার্থক্যটি হ'ল: Convertফাংশন হ্যান্ডলগুলি NULL, i.ToString()এটি একটি নিক্ষেপ করবে না কারণ NULL reference exception error.ব্যবহার করে ভাল কোডিং অনুশীলন convertসর্বদা নিরাপদ।

আসুন আরেকটি উদাহরণ দেখুন:

string s;
object o = null;
s = o.ToString(); 
//returns a null reference exception for s. 

string s;
object o = null;
s = Convert.ToString(o); 
//returns an empty string for s and does not throw an exception.

0

Convert.ToString(value)থেকে obj ভোটদান প্রথম চেষ্টা IConvertible , তারপর IFormattable সংশ্লিষ্ট ডাকতে ToString(...)পদ্ধতি। পরিবর্তে যদি প্যারামিটার মান হয় nullতবে ফিরে আসুন string.Empty। শেষ অবলম্বন হিসাবে, obj.ToString()অন্য কিছু না হলে ফিরে আসুন।

এটি লক্ষণীয় যে উদাহরণস্বরূপ যদি বাতিল হয়ে যায় তবে ফিরে আসতে Convert.ToString(value) পারেnullvalue.ToString()

দেখুন নেট রেফারেন্স উৎস


0

আমি এই কোডটি লিখেছি এবং এটি সংকলন করেছি।

class Program
{
    static void Main(string[] args)
    {
        int a = 1;
        Console.WriteLine(a.ToString());
        Console.WriteLine(Convert.ToString(a));
    }
}

'রিভার্স ইঞ্জিনিয়ারিং' ( ইলস্পাই ) ব্যবহার করে আমি খুঁজে পাই 'অবজেক্ট। টুস্ট্রিং ()' এবং 'কনভার্ট। টুস্ট্রিং (আপত্তি)' ঠিক একটি কাজ করে। ইনফ্যাক্ট 'কনভার্ট। টুস্ট্রিং (আপত্তি)' কল 'অবজেক্ট.টোস্ট্রিং ()' সুতরাং 'অবজেক্ট.টোস্ট্রিং ()' দ্রুততর।

অবজেক্ট টুস্ট্রিং পদ্ধতি :

class System.Object
{
    public string ToString(IFormatProvider provider)
    {
        return Number.FormatInt32(this, null, NumberFormatInfo.GetInstance(provider));
    }
}

রূপান্তরকারী.টোস্ট্রিং পদ্ধতি :

class System.Convert
{
    public static string ToString(object value)
    {
        return value.ToString(CultureInfo.CurrentCulture);
    }
}

0

সি # তে আপনি যদি একটি স্ট্রিং ভেরিয়েবল ঘোষণা করেন এবং যদি আপনি সেই ভেরিয়েবলের কোনও মান বরাদ্দ করেন না, তবে ডিফল্টরূপে সেই ভেরিয়েবল একটি নাল মান নেয়। এই জাতীয় ক্ষেত্রে, আপনি যদি টসস্ট্রিং () পদ্ধতি ব্যবহার করেন তবে আপনার প্রোগ্রামটি নাল রেফারেন্সের ব্যতিক্রম ছুঁড়ে দেবে। অন্যদিকে, আপনি যদি কনভার্ট.টোস্ট্রিং () পদ্ধতি ব্যবহার করেন তবে আপনার প্রোগ্রামটি ব্যতিক্রম ছুঁড়ে ফেলবে না।


0
  • Convert.Tostring() মূলত কেবল নিম্নলিখিতগুলি কল করে value == null ? String.Empty: value.ToString()

  • (string)variableআপনি যখন কাস্ট করছেন তখন তার মধ্যে কোনও অন্তর্নিহিত বা স্পষ্টত অপারেটর উপস্থিত থাকলে কেবল কাস্ট করা হবে

  • ToString()টাইপটির দ্বারা ওভাররাইড করা যেতে পারে (এটি কী করে তার উপর এটি নিয়ন্ত্রণ করে), যদি না টাইপটির নামে ফলাফল আসে

স্পষ্টতই যদি কোনও জিনিস শূন্য থাকে তবে আপনি উদাহরণ সদস্যকে অ্যাক্সেস করতে পারবেন না ToString(), এটি ব্যতিক্রম ঘটবে


-1

রূপান্তর। টস্ট্রিং () ফাংশন NUL পরিচালনা করে যেখানে .ToString () পদ্ধতিটি করে না। ভিজিট এখানে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.