Экспорт (0) Печать
Развернуть все
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

Object.ToString - метод

Возвращает строку, представляющую текущий объект.

Пространство имен:  System
Сборка:  mscorlib (в mscorlib.dll)

public virtual string ToString()

Возвращаемое значение

Тип: System.String
Строка, представляющая текущий объект.

ToString является основным методом форматирования в .NET Framework. Он преобразует объект в строковое представление, таким образом, чтобы это подходит для отображения. (Дополнительные сведения о поддержке форматирования в .NET Framework см. в разделе Типы форматирования.)

Реализация метода 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


Типы обычно переопределяют метод 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


Замечания о Среда выполнения Windows

При вызове метода 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, среда CLR будет использовать IStringable.ToString объекта Среда выполнения Windows перед обратным западением в реализации по умолчанию Object.ToString.

ПримечаниеПримечание

Классы Windows Runtime, написанные на C# или Visual Basic могут переопределять метод ToString.

7bxwbwt2.collapse_all(ru-ru,VS.110).gifИнтерфейс Среда выполнения Windows и IStringable

Начиная с Windows 8.1, Среда выполнения Windows включает интерфейс IStringable метод которого один, IStringable.ToString, обеспечивает базовую поддержку форматирования соответствующую данному предоставленному Object.ToString. Чтобы устранить неоднозначность, нет необходимости реализовывать IStringable в управляемых типах.

Когда управляемые объекты называются машинным кодом или кодом, написанным на языках, таких как JavaScript или C ++/CX, указывающая, что они реализуют IStringable. Среда CLR автоматически применяется вызовы из IStringable.ToString в Object.ToString в случае IStringable не реализован в управляемом объекте.

Предупреждающее замечаниеВнимание

Поскольку автоматически инструменты IStringable среды CLR для всех управляемых приложений Магазин 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 или пустую строку.

  • Переопределенный ToString не должен создавать исключение.

  • Если строковое представление экземпляра и чувствительно или может быть отформатирован различными способами, реализуйте интерфейс IFormattable.

  • Если возвращаемая строка содержит важные сведения, то необходимо запросить соответствующее разрешение. Если требование завершается успешно, то можно получить конфиденциальные сведения; в противном случае необходимо вернуть строку, из которой удалены конфиденциальные сведения.

  • Переопределенный ToString не должно иметь побочных эффектов наблюдаемых во избежание усложнений при отладке. Например, вызов метода ToString не должен изменить значение поля экземпляра.

  • Если тип реализует метод анализа (или Parse или метод TryParse, конструктор или другой статический метод, который создает экземпляр типа из строки), необходимо убедиться, что строка, возвращаемая методом ToString можно преобразовать в экземпляр объекта.

.NET Framework

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

Приложения .NET для Windows Phone

Поддерживается в версиях: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2014 Microsoft