Convert.ToString ()과 .ToString ()의 차이점


161

Convert.ToString()과 의 차이점은 무엇입니까 .ToString()?

온라인에서 많은 차이점을 발견했지만 가장 큰 차이점은 무엇입니까?


7
당신은 웹에서 많은 차이가 있다고 말하고 나중에이 특정한 이유 때문인지 묻습니다. 웹에서 또 무엇을 찾았습니까?
라이언

3
Convert.ToString ()에는 CultureInfo를 사용할 수있는 오버로드가 있지만 .ToString ()에는 이러한 오버로드가 없습니다.
Artemix 2014

답변:


236

Convert.ToString()핸들 null, 동안은 ToString()하지 않습니다.


3
좋은 ..이 특정한 이유 때문에 그들은 사용합니다. 두 가지 방법?
TinTin

또한 준 관련, 자세한 내용은이 답변을 참조하십시오. stackoverflow.com/questions/496096/…
JYelton

JustDecompile / Reflector를 사용한 차이점에 대한 추가 정보 : kodefuguru.com/post/2011/06/14/…
Ubikuity

5
당신이 원하는 마십시오 null예외를 빈 문자열을 반환하거나 던져? 캐스팅과 사용의 차이와 비슷합니다 as.
styfle 2012 년

@Ubikuity : 링크가 깨진
hdoghmen

65

ToString()객체에 대한 호출 은 객체가 null이 아니라고 가정합니다 (객체가 인스턴스 메서드를 호출하려면 존재해야하기 때문). Convert.ToString(obj)(이 변환 클래스에 정적의 방법으로), 대신 반환 객체를 추정 할 필요가 없습니다 것은 null는 아니고, String.Empty이 경우 입니다 NULL을.


var arg = Request.Params.Get ( "__ EVENTARGUMENT"); string _arg = Convert.ToString (arg); _arg는 arg가 null 일 때 String.Empty를 반환하지 않습니다. 왜?
vml19 2012 년

2
@Nilaa 당신은 코멘트 대신에 이것을 묻는 다른 질문을 열 수 있습니다. 내 첫 번째 질문은 무엇인가 않습니다 인수가 null 인 경우는 반환? 내 첫 번째 생각은 "arg"가 실제로 "문자열"유형이므로 전달한 내용 만 반환하는 Convert.ToString (...)의 오버로드를 호출하는 것입니다. 이 논의는 메서드의 "객체"오버로드와 관련됩니다.
Chris Dwyer

4
@Roshe 그래, 나는 이것에 의해 조금 얻었다. 인수가 인 경우를 Convert.ToString(string value)반환 null합니다 null. 인수가 인 경우를 Convert.ToString(object value)반환 String.Empty합니다 null.
Tim Goodman

22

null값 처리에 대한 다른 답변 외에도 Convert.ToString사용을 시도 IFormattable하고IConvertible base를 호출하기 전에 인터페이스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
이것은 매우 중요한 정보이기 때문에 정답에 추가되어야합니다.
Santhos 2015

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 ()그렇지 않다는 것입니다. NULL 참조 예외 오류가 발생합니다. 따라서 좋은 코딩 연습 convert은 항상 안전합니다.


11
int는 null이 될 수 없기 때문에 예제는 약간 유효하지 않습니다
MikeT

6

클래스를 만들고 toString원하는 작업을 수행 하도록 메서드를 재정의 할 수 있습니다.

예를 들어 "MyMail" 클래스를 만들고 toString메서드를 재정 의하여 현재 개체를 작성하는 대신 전자 메일을 보내거나 다른 작업을 수행 할 수 있습니다.

Convert.toString동등한 지정된 값을 문자열 표현으로 변환한다.


2
Convert.ToString은 실제로 null을 확인하는 안전한 메서드이며 값이 null이 아니면 단순히 ToString 메서드를 호출합니다. 따라서 어떤 경우에도 ToString 메서드를 재정의 한 경우 재정의 된 ToString 메서드가 호출됩니다.
ZafarYousafi

이 널 안전성은 클래스를 다루는 경우에만 도움이됩니다. 값 형식은 null 일 수 없으므로 안전하게 ToString 메서드를 호출 할 수 있습니다.
ZafarYousafi

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

메서드는 null 처리를 제외하고 "기본적으로"동일 합니다.

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

MSDN에서 :
Convert.ToString 메서드

지정된 값을 해당하는 문자열 표현으로 변환합니다.

Object.ToString

현재 개체를 나타내는 문자열을 반환합니다.


"아무것도 인쇄하지 않는다"? 아무것도 아니야? null, ""또는 "null"?
weston

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. 감사합니다.
Ashok kumar 2013-04-17

3

@ Ryan 의 대답에 동의합니다 . 그런데이 목적을 위해 C # 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()null 값을 처리 할 수없고 null 값 convert.ToString()을 처리 할 수 ​​있으므로 시스템이 null 값을 처리하도록하려면 convert.ToString().


2

Convert.ToString(strName) null 허용 값을 처리하고 strName.Tostring() NULL 값을 처리하고 예외를 발생하지 않습니다.

그것은 더 나은 그래서 사용 Convert.ToString().ToString();


2
ToString() Vs Convert.ToString()

유사점 :-

둘 다 특정 유형을 문자열로 변환하는 데 사용됩니다. 즉, int를 문자열로, float를 문자열로 또는 객체를 문자열로 변환합니다.

차이 :-

ToString()Convert.ToString()null 값을 처리하는 경우 null을 처리 할 수 ​​없습니다 .

예 :

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)); 

여기서 두 메서드는 모두 문자열을 변환하는 데 사용되지만 기본 차이점은 다음과 같습니다. Convertfunction handles NULL, i.ToString()그렇지 않은 경우 NULL reference exception error.So를 throw하는 좋은 코딩 방법 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()다른 방법이 효과가 없으면 반환 하십시오.

예를 들어 null을 반환 하면 반환 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));
    }
}

'역 공학'( ilspy ) 을 사용하여 ' object.ToString ()'과 'Convert.ToString (obj)'가 정확히 한 가지를 수행한다는 것을 알았 습니다. 사실 'Convert.ToString (obj)'는 'object.ToString ()'을 호출하므로 'object.ToString ()'이 더 빠릅니다.

Object.ToString 메서드 :

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

Conver.ToString 메서드 :

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

0

C #에서 문자열 변수를 선언하고 해당 변수에 값을 할당하지 않으면 기본적으로 해당 변수는 null 값을 사용합니다. 이 경우 ToString () 메서드를 사용하면 프로그램에서 null 참조 예외가 발생합니다. 반면에 Convert.ToString () 메서드를 사용하면 프로그램에서 예외가 발생하지 않습니다.


0
  • Convert.Tostring() 기본적으로 다음을 호출합니다. value == null ? String.Empty: value.ToString()

  • (string)variable캐스팅 하는 항목에 암시 적 또는 명시 적 연산자 가있는 경우 에만 캐스팅 됩니다.

  • ToString()유형에 의해 재정의 될 수 있습니다 (그것이하는 일을 제어 할 수 있음 ).

분명히 객체가 null 인 경우 인스턴스 멤버에 액세스 할 수 없으며 ToString()예외가 발생합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.