이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

Object.ToString 메서드 ()

 

게시 날짜: 2016년 11월

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

네임스페이스:   System
어셈블리:  mscorlib(mscorlib.dll에 있음)

public virtual string ToString()

반환 값

Type: System.String

현재 개체를 나타내는 문자열입니다.

Object.ToString 주요 메서드는.NET Framework의 서식을 지정 합니다. 으로 표시 하기 위해 적합 개체를 문자열 표현으로 변환 합니다. (.NET Framework의 지원 형식에 대 한 정보를 참조 하십시오. .NET Framework의 형식 서식 지정.) 기본 구현은 Object.ToString 메서드는 개체 형식의 정규화 된 이름을 반환 합니다.

System_CAPS_important중요

다른 형식의 멤버 목록에서 링크를 따라이 페이지를 도달 있습니다. 해당 형식이 아니며 이므로 Object.ToString합니다. 기능을 상속는 Object.ToString 메서드.

형식은 자주 재정의 Object.ToString 메서드를 특정 유형의 더 적합 한 문자열 표현을 제공 합니다. 형식을 자주 오버 로드는 Object.ToString 형식 문자열 또는 문화권 구분 서식 지정에 대 한 지원을 제공 하는 방법입니다.

섹션 내용

기본 Object.ToString() 메서드
Object.ToString() 메서드를 재정의합니다.
ToString 메서드를 오버 로드
Object.ToString 메서드를 확장합니다.
Windows 런타임에 대 한 참고 사항

기본 구현에서 ToString 메서드 형식의 정규화 된 이름을 반환는 Object, 다음 예제와 같이 합니다.

using System;

public class Example
{
   public static void Main()
   {
      Object obj = new Object();
      Console.WriteLine(obj.ToString());
   }
}
// The example displays the following output:
//      System.Object

때문에 Object 모든 참조 형식의 기본 클래스는.NET Framework에서이 동작을 재정의 하지 않는 참조 형식에 상속 되는 ToString 메서드. 다음은 이에 대한 예입니다. 라는 클래스를 정의 Object1 모두의 기본 구현은 받아들이는 Object 멤버입니다. 해당 ToString 메서드는 개체의 정규화 된 형식 이름을 반환 합니다.

using System;
using Examples;

namespace Examples
{
   public class Object1
   {
   }
}

public class Example
{
   public static void Main()
   {
      object obj1 = new Object1();
      Console.WriteLine(obj1.ToString());
   }
}
// The example displays the following output:
//   Examples.Object1

형식은 일반적으로 재정의 하는 Object.ToString 메서드 개체 인스턴스를 나타내는 문자열을 반환 합니다. 예를 들어와 같은 기본 형식은 Char, Int32, 및 String 제공 ToString 문자열 형식의 개체를 나타내는 값을 반환 하는 구현 합니다. 다음 예제에서는 클래스를 정의 Object2, 재정의 하는 ToString 메서드를 형식에 대 한 이름과 해당 값을 반환 합니다.

using System;

public class Object2
{
   private object value;

   public Object2(object value)
   {
      this.value = value;
   }

   public override string ToString()
   {
      return base.ToString() + ": " + value.ToString();
   }
}

public class Example
{
   public static void Main()
   {
      Object2 obj2 = new Object2('a');
      Console.WriteLine(obj2.ToString());
   }
}
// The example displays the following output:
//       Object2: a

다음 표에서.NET Framework의 형식 범주를 나열 하 고 재정의 여부를 나타내는 Object.ToString 메서드.

형식 범주

Object.ToString() 재정의

동작

클래스

해당 없음

해당 없음

구조체

예 (ValueType.ToString)

Object.ToString()와 동일

열거형

예 (Enum.ToString())

멤버 이름

인터페이스

아니요

해당 없음

대리자

아니요

해당 없음

재정의에 대 한 자세한 내용은 상속자 참고 섹션을 참조 ToString합니다.

매개 변수가 없는 재정의 하는 것 외에도 Object.ToString() 메서드를 다양 한 종류의 오버 로드는 ToString 메서드를 매개 변수를 허용 하는 메서드의 버전을 제공 합니다. 가장 일반적으로 지원 하기 위해 변수 형식 및 문화권별 형식 지정이 수행 됩니다.

다음 예제에서는 오버 로드는 ToString 의 다양 한 필드의 값을 포함 하는 결과 문자열을 반환 하는 메서드는 Automobile 클래스입니다. 4 개의 형식 문자열을 정의 합니다: G, 모델 이름 및 연도 반환 합니다. D, 모델 이름, 연도, 및; 문의 개수를 반환 합니다. 모델 이름, 연도 및 실린더; 수를 반환 하는 C 및 A 4 개의 필드 값이 모든 문자열을 반환 합니다.

using System;

public class Automobile
{
   private int _doors;
   private String _cylinders;
   private int _year;
   private String _model;

   public Automobile(String model, int year , int doors,
                     String cylinders)
   {
      _model = model;
      _year = year;
      _doors = doors;
      _cylinders = cylinders;
   }

   public int Doors
   { get { return _doors; } }

   public String Model
   { get { return _model; } }

   public int Year
   { get { return _year; } }

   public String Cylinders
   { get { return _cylinders; } }

   public override String ToString()
   {
      return ToString("G");
   }

   public String ToString(String fmt)
   {
      if (String.IsNullOrEmpty(fmt))
         fmt = "G";

      switch (fmt.ToUpperInvariant())
      {
         case "G":
            return String.Format("{0} {1}", _year, _model);
         case "D":
            return String.Format("{0} {1}, {2} dr.",
                                 _year, _model, _doors);
         case "C":
            return String.Format("{0} {1}, {2}",
                                 _year, _model, _cylinders);
         case "A":
            return String.Format("{0} {1}, {2} dr. {3}",
                                 _year, _model, _doors, _cylinders);
         default:
            String msg = String.Format("'{0}' is an invalid format string",
                                       fmt);
            throw new ArgumentException(msg);
      }
   }
}

public class Example
{
   public static void Main()
   {
      var auto = new Automobile("Lynx", 2016, 4, "V8");
      Console.WriteLine(auto.ToString());
      Console.WriteLine(auto.ToString("A"));
   }
}
// The example displays the following output:
//       2016 Lynx
//       2016 Lynx, 4 dr. V8

다음 예제에서는 오버 로드 된 Decimal.ToString(String, IFormatProvider) 메서드를 통화 값의 문화권 구분 서식 지정을 표시 합니다.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      String[] cultureNames = { "en-US", "en-GB", "fr-FR",
                                "hr-HR", "ja-JP" };
      Decimal value = 1603.49m;
      foreach (var cultureName in cultureNames) {
         CultureInfo culture = new CultureInfo(cultureName);
         Console.WriteLine("{0}: {1}", culture.Name,
                           value.ToString("C2", culture));
      }
   }
}
// The example displays the following output:
//       en-US: $1,603.49
//       en-GB: £1,603.49
//       fr-FR: 1 603,49 €
//       hr-HR: 1.603,49 kn
//       ja-JP: ¥1,603.49

형식 문자열 및 문화권별 형식 지정에 대 한 자세한 내용은 참조 하십시오. .NET Framework의 형식 서식 지정합니다. 숫자 값에서 지 원하는 형식 문자열에 대 한 참조 표준 숫자 형식 문자열사용자 지정 숫자 형식 문자열합니다. 날짜 및 시간 값에서 지 원하는 형식 문자열에 대 한 참조 표준 날짜 및 시간 형식 문자열사용자 지정 날짜 및 시간 형식 문자열합니다.

기본값을 상속 하는 형식은 때문에 Object.ToString 메서드를 있습니다 동작 바람직하지 않은 찾아서 변경 합니다. 배열 및 컬렉션 클래스의 경우 특히 유용합니다. 수 있지만 ToString 메서드는 배열 또는 컬렉션 클래스의 해당 멤버의 값을 표시 하려면 대신 표시 형식을 정규화 된 형식 이름을 다음 예제와 같이 합니다.

using System;
using System.Collections.Generic;

public class Example
{
   public static void Main()
   {
      int[] values = { 1, 2, 4, 8, 16, 32, 64, 128 };
      Console.WriteLine(values.ToString());

      List<int> list = new List<int>(values);
      Console.WriteLine(list.ToString());
   }
}
// The example displays the following output:
//       System.Int32[]
//       System.Collections.Generic.List`1[System.Int32]

원하는 결과 문자열을 생성 하는 몇 가지 옵션이 있습니다.

  • 형식이 배열, 컬렉션 개체 또는 개체를 구현 하는 경우는 IEnumerable 또는 IEnumerable<T> 인터페이스를 사용 하 여 해당 요소를 열거할 수 있습니다는 foreach C#의 문 또는 For Each...Next Visual Basic에서 생성 합니다.

  • 클래스에는 없는 경우 sealed (in C#) 또는 NotInheritable (Visual Basic의 경우)의 해당 기본 클래스에서 상속 하는 래퍼 클래스를 개발할 수 있습니다 Object.ToString 메서드를 사용자 지정 하려면. 여기에 최소한 다음을 수행 하면이 필요 합니다.

    1. 필요한 모든 생성자를 구현 합니다. 파생된 클래스의 기본 클래스 생성자를 상속 하지 않습니다.

    2. 재정의 Object.ToString 메서드를 선택 하는 결과 문자열을 반환 합니다.

    다음 예제에 대 한 래퍼 클래스를 정의 List<T> 클래스입니다. 재정의 Object.ToString 메서드를 정규화 된 형식 이름 대신 컬렉션의 각 메서드에 값을 표시 합니다.

    using System;
    using System.Collections.Generic;
    
    public class CList<T> : List<T>
    {
       public CList(IEnumerable<T> collection) : base(collection)
       { }
    
       public CList() : base()
       {}
    
       public override String ToString()
       {
          String retVal = String.Empty;
          foreach (T item in this) {
             if (String.IsNullOrEmpty(retVal))
                retVal += item.ToString();
             else
                retVal += String.Format(", {0}", item);
          }
          return retVal;
       }
    }
    
    public class Example
    {
       public static void Main()
       {
          var list2 = new CList<int>();
          list2.Add(1000);
          list2.Add(2000);
          Console.WriteLine(list2.ToString());
       }
    }
    // The example displays the following output:
    //    1000, 2000
    
  • 개발는 확장 메서드 원하는 결과 문자열을 반환 하는 합니다. 참고 기본값을 재정의할 수 없습니다 Object.ToString 이러한 방식으로 메서드 (즉, 확장 클래스 (C#) 또는 모듈 (Visual Basic)에서는 사용할 수 없습니다 라는 매개 변수가 없는 메서드 ToString 원래 형식 대신 이라고 하며 ToString 메서드. 매개 변수가 사용자에 대 한 다른 이름을 제공 해야 ToString 대체 합니다.

    확장 하는 두 메서드를 정의 하는 다음 예제에서는 List<T> 클래스:는 매개 변수가 없는 ToString2 메서드를 및 ToString 메서드는 String 서식 문자열을 나타내는 매개 변수입니다.

    using System;
    using System.Collections.Generic;
    
    public static class StringExtensions
    {
       public static String ToString2<T>(this List<T> l)
       {
          String retVal = String.Empty;
          foreach (T item in l)
             retVal += String.Format("{0}{1}", String.IsNullOrEmpty(retVal) ?
                                                         "" : ", ",
                                      item);
          return String.IsNullOrEmpty(retVal) ? "{}" : "{ " + retVal + " }";
       }
    
       public static String ToString<T>(this List<T> l, String fmt)
       {
          String retVal = String.Empty;
          foreach (T item in l) {
             IFormattable ifmt = item as IFormattable;
             if (ifmt != null)
                retVal += String.Format("{0}{1}",
                                        String.IsNullOrEmpty(retVal) ?
                                           "" : ", ", ifmt.ToString(fmt, null));
             else
                retVal += ToString2(l);
          }
          return String.IsNullOrEmpty(retVal) ? "{}" : "{ " + retVal + " }";
       }
    }
    
    public class Example
    {
       public static void Main()
       {
          List<int> list = new List<int>();
          list.Add(1000);
          list.Add(2000);
          Console.WriteLine(list.ToString2());
          Console.WriteLine(list.ToString("N0"));
       }
    }
    // The example displays the following output:
    //       { 1000, 2000 }
    //       { 1,000, 2,000 }
    

호출 하는 경우는 ToString 클래스의 메서드는 Windows 런타임, 재정의 하지 않는 클래스에 대 한 기본 동작이 제공 ToString합니다. 이는 .NET Framework에서 Windows 런타임에 대해 제공하는 지원의 일부입니다(Windows 스토어 앱 및 Windows 런타임에 대한 .NET Framework 지원 참조). 에 있는 클래스는 Windows 런타임 상속 하지 Object, 항상 구현 하지는 ToString합니다. 그러나 항상 것 처럼 한 ToString, Equals(Object), 및 GetHashCode 메서드 C# 또는 Visual Basic 코드에서 사용 하 고.NET Framework는 이러한 메서드에 대 한 기본 동작을 제공 하는 경우.

부터는 .NET Framework 4.5.1, 공용 언어 런타임에서 사용 하 여 IStringable.ToString 에 Windows 런타임 대체의 기본 구현 하기 전에 개체 Object.ToString.

System_CAPS_note참고

Windows 런타임 클래스는 C# 또는 Visual Basic에서 작성 된 재정의 ToString 메서드.

부터는 Windows 8.1, Windows 런타임 포함는 IStringable 인터페이스의 단일 메서드 IStringable.ToString, 기본 서식 지정 지원을 제공 하 여 제공 하는 Object.ToString합니다. 명확 하 게 하려면 구현 해서는 안 IStringable 에 관리 되는 형식입니다.

네이티브 코드 또는 JavaScript 또는 C + 등의 언어로 작성 된 코드에서 관리 되는 개체 호출 될 때 +를 구현 하는 것 처럼 CX, IStringable합니다. 공용 언어 런타임에서 호출을 자동으로 라우팅하므로 IStringable.ToStringObject.ToString 이벤트 IStringable 관리 되는 개체에 구현 되지 않았습니다.

System_CAPS_warning경고

공용 언어 런타임에서 자동 구현 하기 때문에 IStringable 모든 관리 되는 형식에서 Windows 스토어 응용 프로그램의 경우 권장는 제공 하지 않으면 고유한 IStringable 구현 합니다. 구현 IStringable 를 호출할 때 의도 하지 않은 동작이 발생할 수 있습니다 ToString 에서 Windows 런타임, C + + /CX, 또는 JavaScript입니다.

구현 하도록 선택 하는 경우 IStringable 에 내보내진 공용 관리 되는 형식에는 Windows 런타임 구성 요소는 다음과 같은 제한 사항이 적용 합니다.

  • 정의할 수는 IStringable 와 같은 "클래스 구현" 관계 에서만에서 인터페이스

    public class NewClass : IStringable
    

    C#

    Public Class NewClass : Implements IStringable
    

    Visual Basic

  • 구현할 수 없습니다 IStringable 인터페이스에 있습니다.

  • 형식 매개 변수를 선언할 수 없습니다 IStringable합니다.

  • IStringable 메서드, 속성 또는 필드의 반환 형식일 수 없습니다.

  • 숨길 수 없습니다 프로그램 IStringable 다음과 같은 메서드 정의 사용 하 여 기본 클래스에서 구현 합니다.

    
    public class NewClass : IStringable
    {
       public new string ToString()
       {
          return "New ToString in NewClass";
       }
    }
    
    

    대신,는 IStringable.ToString 구현은 항상 기본 클래스 구현을 재정의 해야 합니다. 강력한 형식의 클래스 인스턴스에서 호출해야만 ToString 구현을 숨길 수 있습니다.

호출 하는 다양 한 조건에서 네이티브 코드에서 구현 하는 관리 되는 형식 참고 IStringable 표시 하거나 숨깁니다 해당 ToString 구현 예기치 않은 동작이 발생할 수 있습니다.

상속자 참고 사항:

고유한 형식을 구현할 때 재정의 해야는 ToString 메서드를 이러한 형식에 대 한 의미 있는 값을 반환 합니다. 보다 서식을 더 많이 제어할 필요가 있는 클래스를 파생 ToString 제공 구현할 수는 IFormattable 인터페이스입니다. 해당 IFormattable.ToString(String, IFormatProvider) 메서드를 사용 하면 서식 지정을 제어 하는 형식 문자열을 정의 하 고 사용 하는 IFormatProvider 문화권별 서식 지정에 제공할 수 있는 개체입니다.

재정의 ToString 메서드 다음이 지침을 따르십시오.

  • 반환 된 문자열은 친숙 하 고 사용자가 읽을 수 있어야 합니다.

  • 반환 된 문자열 개체 인스턴스 값을 고유 하 게 식별 해야 합니다.

  • 반환 되는 문자열 디버거에 표시에 적합 한 되도록 가능한 한 짧게 해야 합니다.

  • 프로그램 ToString 재정의 반환 하지 않아야 String.Empty 또는 null 문자열입니다.

  • 프로그램 ToString 재정의 예외를 throw 해서는 안 됩니다.

  • 인스턴스의 문자열 표현을 문화권을 구분 하거나 여러 가지 방법으로 서식을 지정할 수 있습니다, 경우에 구현 된 IFormattable 인터페이스입니다.

  • 반환 되는 문자열에 중요 한 정보를 포함 하는 경우 먼저 적절 한 권한을 요청 해야 합니다. 요청이 성공 하면, 중요 한 정보를 반환할 수 있습니다. 그렇지 않으면 중요 한 정보를 제외 하는 문자열을 반환 해야 합니다.

  • 프로그램 ToString 재정의 observable 부작용은 없어야 디버깅 문제가 발생 하지 않도록 하려면 있어야 합니다. 예를 들어 호출은 ToString 메서드는 인스턴스 필드의 값을 바꾸지 않아야 합니다.

  • 형식을 구문 분석 메서드를 구현 하는 경우 (또는 Parse 또는 TryParse 메서드, 생성자 또는 문자열에서 형식의 인스턴스를 만드는 데는 몇 가지 다른 정적 메서드)를 반환 하는 문자열 확인 해야는 ToString 메서드가 개체 인스턴스로 변환 될 수 있습니다.

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
1.1 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능
맨 위로 이동
표시: