Tostring c что это
Перейти к содержимому

Tostring c что это

  • автор:

Tostring c что это

Все классы в .NET, даже те, которые мы сами создаем, а также базовые типы, такие как System.Int32 , являются неявно производными от класса Object. Даже если мы не указываем класс Object в качестве базового, по умолчанию неявно класс Object все равно стоит на вершине иерархии наследования. Поэтому все типы и классы могут реализовать те методы, которые определены в классе System.Object. Рассмотрим эти методы.

ToString

Метод ToString служит для получения строкового представления данного объекта. Для базовых типов просто будет выводиться их строковое значение:

int i = 5; Console.WriteLine(i.ToString()); // выведет число 5 double d = 3.5; Console.WriteLine(d.ToString()); // выведет число 3,5

Для классов же этот метод выводит полное название класса с указанием пространства имен, в котором определен этот класс. И мы можем переопределить данный метод. Посмотрим на примере:

Person person = new Person < Name = "Tom" >; Console.WriteLine(person.ToString()); // выведет название класса Person Clock clock = new Clock < Hours = 15, Minutes = 34, Seconds = 53 >; Console.WriteLine(clock.ToString()); // выведет 15:34:53 class Clock < public int Hours < get; set; >public int Minutes < get; set; >public int Seconds < get; set; >public override string ToString() < return $"::"; > > class Person < public string Name < get; set; >= ""; >

Для переопределения метода ToString() в классе Clock, который представляет часы, используется ключевое слово override (как и при обычном переопределении виртуальных или абстрактных методов). В данном случае метод ToString() выводит в строке значения свойств Hours, Minutes, Seconds.

Класс Person не переопределяет метод ToString, поэтому для этого класса срабатывает стандартная реализация этого метода, которая выводит просто название класса.

Кстати в данном случае мы могли задействовать обе реализации:

Person tom = new Person < Name = "Tom" >; Console.WriteLine(tom.ToString()); // Tom Person undefined = new Person(); Console.WriteLine(undefined.ToString()); // Person class Person < public string Name < get; set; >= ""; public override string? ToString() < if (string.IsNullOrEmpty(Name)) return base.ToString(); return Name; >>

То есть если имя — свойство Name не имеет значения, оно представляет пустую строку, то возвращается базовая реализация — название класса. Стоит отметить, что базовая реализация возвращает не просто строку, а объект string? — то есть это может быть строка string, либо значение null , которое указывает на отсутствие значения. И в реальности в качестве возвращаемого типа для метода мы можем использовать как string , так и string?

Если же имя у объекта Person установлено, то возвращается значение свойства Name. Для проверки строки на наличие значения применяется метод String.IsNullOrEmpty() .

Стоит отметить, что различные технологии на платформе .NET активно используют метод ToString для разных целей. В частности, тот же метод Console.WriteLine() по умолчанию выводит именно строковое представление объекта. Поэтому, если нам надо вывести строковое представление объекта на консоль, то при передаче объекта в метод Console.WriteLine необязательно использовать метод ToString() — он вызывается неявно:

Person person = new Person < Name = "Tom" >; Console.WriteLine(person); // Tom Clock clock = new Clock < Hours = 15, Minutes = 34, Seconds = 53 >; Console.WriteLine(clock); // выведет 15:34:53

Метод GetHashCode

Метод GetHashCode позволяет возвратить некоторое числовое значение, которое будет соответствовать данному объекту или его хэш-код. По данному числу, например, можно сравнивать объекты. Можно определять самые разные алгоритмы генерации подобного числа или взять реализацию базового типа:

class Person < public string Name < get; set; >= ""; public override int GetHashCode() < return Name.GetHashCode(); >>

В данном случае метод GetHashCode возвращает хеш-код для значения свойства Name. То есть два объекта Person, которые имеют одно и то же имя, будут возвращать один и тот же хеш-код. Однако в реальности алгоритм может быть самым различным.

Получение типа объекта и метод GetType

Метод GetType позволяет получить тип данного объекта:

Person person = new Person < Name = "Tom" >; Console.WriteLine(person.GetType()); // Person

Этот метод возвращает объект Type , то есть тип объекта.

С помощью ключевого слова typeof мы получаем тип класса и сравниваем его с типом объекта. И если этот объект представляет тип Person, то выполняем определенные действия.

object person = new Person < Name = "Tom" >; if (person.GetType() == typeof(Person)) Console.WriteLine("Это реально класс Person");

Причем поскольку класс Object является базовым типом для всех классов, то мы можем переменной типа object присвоить объект любого типа. Однако для этой переменной метод GetType все равно вернет тот тип, на объект которого ссылается переменная. То есть в данном случае объект типа Person.

Стоит отметить, что проверку типа в примере выше можно сократить с помощью оператора is :

object person = new Person < Name = "Tom" >; if (person is Person) Console.WriteLine("Это реально класс Person");

В отличие от методов ToString, Equals, GetHashCode метод GetType() не переопределяется.

Метод Equals

Метод Equals позволяет сравнить два объекта на равенство. В качестве параметра он принимает объект для сравнения в виде типа object и возврашает true , если оба объекта равны:

public override bool Equals(object? obj)

Например, реализуем данный метод в классе Person:

class Person < public string Name < get; set; >= ""; public override bool Equals(object? obj) < // если параметр метода представляет тип Person // то возвращаем true, если имена совпадают if (obj is Person person) return Name == person.Name; return false; >// вместе с методом Equals следует реализовать метод GetHashCode public override int GetHashCode() => Name.GetHashCode(); >

Метод Equals принимает в качестве параметра объект любого типа, который мы затем приводим к текущему классу — классу Person.

Если переданный объект представляет тип Person, то возвращаем результат сравнения имен двух объектов Person. Если же объект представляет другой тип, то возвращается false.

В данном случае для примера применяется довольно простой алгоритм сравнения, однако при необходимости реализацию метода можно сделать более сложной, например, сравнивать по нескольким свойствам при их наличии.

Стоит отметить, что вместе с методом Equals следует реализовать метод GetHashCode.

var person1 = new Person < Name = "Tom" >; var person2 = new Person < Name = "Bob" >; var person3 = new Person < Name = "Tom" >; bool person1EqualsPerson2 = person1.Equals(person2); // false bool person1EqualsPerson3 = person1.Equals(person3); // true Console.WriteLine(person1EqualsPerson2); // false Console.WriteLine(person1EqualsPerson3); // true

И если следует сравнивать два сложных объекта, как в данном случае, то лучше использовать метод Equals, а не стандартную операцию ==.

Number.prototype.toString()

Метод toString() возвращает строковое представление указанного объекта Number .

Синтаксис

numObj.toString([radix])

Параметры

Необязательный параметр. Целое число между 2 и 36, определяющее основание системы счисления, используемой для представления числового значения.

Выбрасываемые исключения

Если в метод toString() передано основание не в диапазоне от 2 до 36, будет выброшено исключение RangeError .

Описание

Объект Number переопределяет метод toString , унаследованный из объекта Object ; он не наследует метод Object.prototype.toString . Для объектов Number метод toString() возвращает строку, представляющую объект в определённой системе счисления.

Метод toString() разбирает свой первый аргумент и пытается вернуть строковое представление в системе счисления с указанным основанием. Для оснований, больших 10, при обозначении цифр, больших 9, используются буквы латинского алфавита. Например, для шестнадцатеричных чисел (основание 16), используются буквы с a по f .

Если параметр radix не указан, предпочитаемое основание предполагается равным 10.

Если число numObj отрицательно, его знак сохраняется. Это правило действует даже если основание равно 2; возвращённая строка является двоичным представлением положительного числа numObj , перед которым ставится знак — , а не дополнительным кодом числа numObj .

Примеры

Пример: использование toString

var count = 10; console.log(count.toString()); // Выведет '10' console.log((17).toString()); // Выведет '17' var x = 6; console.log(x.toString(2)); // Выведет '110' console.log((254).toString(16)); // Выведет 'fe' console.log((-10).toString(2)); // Выведет '-1010' console.log((-0xff).toString(2)); // Выведет '-11111111' 

Спецификации

Specification
ECMAScript Language Specification
# sec-number.prototype.tostring

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • Number.prototype.toFixed()
  • Number.prototype.toExponential()
  • Number.prototype.toPrecision()

Int32.To String Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Преобразует числовое значение данного экземпляра в эквивалентное ему строковое представление.

Перегрузки

Преобразует числовое значение данного экземпляра в эквивалентное ему строковое представление.

Преобразует числовое значение данного экземпляра в эквивалентное ему строковое представление с использованием указанных сведений об особенностях форматирования для данного языка и региональных параметров.

Преобразует числовое значение данного экземпляра в эквивалентное строковое представление с использованием указанного формата.

Преобразует числовое значение данного экземпляра в эквивалентное ему строковое представление с использованием указанного формата и сведений об особенностях форматирования для данного языка и региональных параметров.

ToString()

Исходный код: Int32.cs Исходный код: Int32.cs Исходный код: Int32.cs

Преобразует числовое значение данного экземпляра в эквивалентное ему строковое представление.

public: override System::String ^ ToString();
public override string ToString ();
override this.ToString : unit -> string
Public Overrides Function ToString () As String
Возвращаемое значение

Строковое представление значения данного экземпляра, состоящее из знака минус, если число отрицательное, и последовательности цифр в диапазоне от 0 до 9 с ненулевой первой цифрой.

Примеры

В следующем примере отображается Int32 значение с помощью метода по умолчанию ToString() . Он также отображает строковые представления значения, полученного Int32 в результате использования ряда описателей стандартного формата. Примеры отображаются с использованием соглашений о форматировании языка и региональных параметров en-US.

using namespace System; void main() < int value = -16325; // Display value using default ToString method. Console::WriteLine(value.ToString()); // Display value using some standard format specifiers. Console::WriteLine(value.ToString("G")); Console::WriteLine(value.ToString("C")); Console::WriteLine(value.ToString("D")); Console::WriteLine(value.ToString("F")); Console::WriteLine(value.ToString("N")); Console::WriteLine(value.ToString("X")); >// The example displays the following output: // -16325 // -16325 // ($16,325.00) // -16325 // -16325.00 // -16,325.00 // FFFFC03B 
int value = -16325; // Display value using default ToString method. Console.WriteLine(value.ToString()); // Displays -16325 // Display value using some standard format specifiers. Console.WriteLine(value.ToString("G")); // Displays -16325 Console.WriteLine(value.ToString("C")); // Displays ($16,325.00) Console.WriteLine(value.ToString("D")); // Displays -16325 Console.WriteLine(value.ToString("F")); // Displays -16325.00 Console.WriteLine(value.ToString("N")); // Displays -16,325.00 Console.WriteLine(value.ToString("X")); // Displays FFFFC03B 
let value = -16325 // Display value using default ToString method. printfn $"" // Displays -16325 // Display value using some standard format specifiers. printfn $"""""" // Displays -16325 printfn $"""""" // Displays ($16,325.00) printfn $"""""" // Displays -16325 printfn $"""""" // Displays -16325.00 printfn $"""""" // Displays -16,325.00 printfn $"""""" // Displays FFFFC03B 
Dim value As Integer = -16325 ' Display value using default ToString method. Console.WriteLine(value.ToString()) ' Displays -16325 ' Display value using some standard format specifiers. Console.WriteLine(value.ToString("G")) ' Displays -16325 Console.WriteLine(value.ToString("C")) ' Displays ($16,325.00) Console.WriteLine(value.ToString("D")) ' Displays -16325 Console.WriteLine(value.ToString("F")) ' Displays -16325.00 Console.WriteLine(value.ToString("N")) ' Displays -16,325.00 Console.WriteLine(value.ToString("X")) ' Displays FFFFC03B 

Комментарии

Метод ToString() форматирует Int32 значение в формате по умолчанию (G или general) с помощью NumberFormatInfo объекта текущего языка и региональных параметров. Если вы хотите указать другой формат или язык и региональные параметры, используйте другие перегрузки ToString метода следующим образом:

Использование формата Для языка и региональных параметров Использование перегрузки
Формат по умолчанию («G») Определенный язык и региональные параметры ToString(IFormatProvider)
Определенный формат Язык и региональные параметры по умолчанию (текущий) ToString(String)
Определенный формат Определенный язык и региональные параметры ToString(String, IFormatProvider)

.NET предоставляет расширенную поддержку форматирования, которая более подробно описана в следующих разделах:

  • Дополнительные сведения об описателях числовых форматов см. в разделах Строки стандартного числового формата и Строки настраиваемого числового формата.
  • Дополнительные сведения о форматировании см. в разделе Типы форматирования.

См. также раздел

  • Parse(String)
  • String
  • Типы форматирования в .NET

Применяется к

ToString(IFormatProvider)

Исходный код: Int32.cs Исходный код: Int32.cs Исходный код: Int32.cs

Преобразует числовое значение данного экземпляра в эквивалентное ему строковое представление с использованием указанных сведений об особенностях форматирования для данного языка и региональных параметров.

public: virtual System::String ^ ToString(IFormatProvider ^ provider);
public: System::String ^ ToString(IFormatProvider ^ provider);
public string ToString (IFormatProvider provider);
public string ToString (IFormatProvider? provider);
override this.ToString : IFormatProvider -> string
Public Function ToString (provider As IFormatProvider) As String
Параметры

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

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

Строковое представление значения данного экземпляра, определяемое параметром provider .

Реализации

Примеры

В следующем примере показано строковое Int32 представление значения с помощью CultureInfo объектов, представляющих несколько разных языков и региональных параметров.

using namespace System; using namespace System::Globalization; void main() < int value = -16325; // Display value using the invariant culture. Console::WriteLine(value.ToString(CultureInfo::InvariantCulture)); // Display value using the en-GB culture. Console::WriteLine(value.ToString(CultureInfo::CreateSpecificCulture("en-GB"))); // Display value using the de-DE culture. Console::WriteLine(value.ToString(CultureInfo::CreateSpecificCulture("de-DE"))); >// The example displays the following output: // -16325 // -16325 // -16325 
int value = -16325; // Display value using the invariant culture. Console.WriteLine(value.ToString(CultureInfo.InvariantCulture)); // Display value using the en-GB culture. Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("en-GB"))); // Display value using the de-DE culture. Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("de-DE"))); // This example displays the following output to the console: // -16325 // -16325 // -16325 
let value = -16325 // Display value using the invariant culture. printfn $"" // Display value using the en-GB culture. printfn $"""""" // Display value using the de-DE culture. printfn $"""""" // This example displays the following output to the console: // -16325 // -16325 // -16325 
Dim value As Integer = -16325 ' Display value using the invariant culture. Console.WriteLine(value.ToString(CultureInfo.InvariantCulture)) ' Display value using the en-GB culture. Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("en-GB"))) ' Display value using the de-DE culture. Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("de-DE"))) ' This example displays the following output to the console: ' -16325 ' -16325 ' -16325 

Комментарии

Метод ToString(IFormatProvider) форматирует Int32 значение в формате по умолчанию («G» или общий) с помощью NumberFormatInfo объекта указанного языка и региональных параметров. Если вы хотите указать другой формат или текущий язык и региональные параметры, используйте другие перегрузки ToString метода следующим образом:

Использование формата Для языка и региональных параметров Использование перегрузки
Формат по умолчанию («G») Язык и региональные параметры по умолчанию (текущий) ToString()
Определенный формат Язык и региональные параметры по умолчанию (текущий) ToString(String)
Определенный формат Определенный язык и региональные параметры ToString(String, IFormatProvider)

Параметр provider — это объект, реализующий IFormatProvider интерфейс . Его GetFormat метод возвращает NumberFormatInfo объект , предоставляющий сведения о формате строки, возвращаемой этим методом, с учетом языка и региональных параметров. Объект, реализующий , IFormatProvider может быть любым из следующих:

  • Объект CultureInfo , представляющий язык и региональные параметры, правила форматирования которых должны использоваться.
  • Объект NumberFormatInfo , содержащий определенные числовые сведения о форматировании для этого значения.
  • Пользовательский объект, реализующий IFormatProvider и метод которого GetFormat возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании.

Если provider имеет значение null или NumberFormatInfo объект не может быть получен из provider , возвращаемое значение форматируется с помощью NumberFormatInfo объекта для текущего языка и региональных параметров потока. Сведения о текущем языке и региональных параметрах потока см. в разделе Thread.CurrentCulture.

.NET предоставляет расширенную поддержку форматирования, которая более подробно описана в следующих разделах:

  • Дополнительные сведения об описателях числовых форматов см. в разделах Строки стандартного числового формата и Строки настраиваемого числового формата.
  • Дополнительные сведения о форматировании см. в разделе Типы форматирования.

См. также раздел

  • Parse(String)
  • String
  • Типы форматирования в .NET

Применяется к

ToString(String)

Исходный код: Int32.cs Исходный код: Int32.cs Исходный код: Int32.cs

Преобразует числовое значение данного экземпляра в эквивалентное строковое представление с использованием указанного формата.

public: System::String ^ ToString(System::String ^ format);
public string ToString (string format);
public string ToString (string? format);
override this.ToString : string -> string
Public Function ToString (format As String) As String
Параметры

Стандартная или пользовательская строка числового формата.

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

Строковое представление значения данного экземпляра, определяемое параметром format .

Исключения

format является недопустимым или не поддерживается.

Примеры

В следующем примере отображается Int32 значение с использованием каждого из поддерживаемых описателей стандартного числового формата вместе с двумя строками настраиваемого числового формата. При преобразовании числовых значений в строки в примере используются соглашения о форматировании языка и региональных параметров en-US.

using namespace System; void main() < int value = -16325; String^ specifier; // Use standard numeric format specifiers. specifier = "G"; Console::WriteLine(": ", specifier, value.ToString(specifier)); specifier = "C"; Console::WriteLine(": ", specifier, value.ToString(specifier)); specifier = "D8"; Console::WriteLine(": ", specifier, value.ToString(specifier)); specifier = "E4"; Console::WriteLine(": ", specifier, value.ToString(specifier)); specifier = "e3"; Console::WriteLine(": ", specifier, value.ToString(specifier)); specifier = "F"; Console::WriteLine(": ", specifier, value.ToString(specifier)); specifier = "N"; Console::WriteLine(": ", specifier, value.ToString(specifier)); specifier = "P"; Console::WriteLine(": ", specifier, (value/100000).ToString(specifier)); specifier = "X"; Console::WriteLine(": ", specifier, value.ToString(specifier)); // Use custom numeric format specifiers. specifier = "0,0.000"; Console::WriteLine(": ", specifier, value.ToString(specifier)); specifier = "#,#.00#;(#,#.00#)"; Console::WriteLine(": ", specifier, (value*-1).ToString(specifier)); > // The example displays the following output: // G: -16325 // C: ($16,325.00) // D8: -00016325 // E4: -1.6325E+004 // e3: -1.633e+004 // F: -16325.00 // N: -16,325.00 // P: 0.00 % // X: FFFFC03B // 0,0.000: -16,325.000 // #,#.00#;(#,#.00#): 16,325.00 
int value = -16325; string specifier; // Use standard numeric format specifier. specifier = "G"; Console.WriteLine(": ", specifier, value.ToString(specifier)); // Displays: G: -16325 specifier = "C"; Console.WriteLine(": ", specifier, value.ToString(specifier)); // Displays: C: ($16,325.00) specifier = "D8"; Console.WriteLine(": ", specifier, value.ToString(specifier)); // Displays: D8: -00016325 specifier = "E4"; Console.WriteLine(": ", specifier, value.ToString(specifier)); // Displays: E4: -1.6325E+004 specifier = "e3"; Console.WriteLine(": ", specifier, value.ToString(specifier)); // Displays: e3: -1.633e+004 specifier = "F"; Console.WriteLine(": ", specifier, value.ToString(specifier)); // Displays: F: -16325.00 specifier = "N"; Console.WriteLine(": ", specifier, value.ToString(specifier)); // Displays: N: -16,325.00 specifier = "P"; Console.WriteLine(": ", specifier, (value/100000).ToString(specifier)); // Displays: P: -16.33 % specifier = "X"; Console.WriteLine(": ", specifier, value.ToString(specifier)); // Displays: X: FFFFC03B // Use custom numeric format specifiers. specifier = "0,0.000"; Console.WriteLine(": ", specifier, value.ToString(specifier)); // Displays: 0,0.000: -16,325.000 specifier = "#,#.00#;(#,#.00#)"; Console.WriteLine(": ", specifier, (value*-1).ToString(specifier)); // Displays: #,#.00#;(#,#.00#): 16,325.00 
let value = -16325 // Use standard numeric format specifier. let specifier = "G" printfn $": " // Displays: G: -16325 let specifier = "C" printfn $": " // Displays: C: ($16,325.00) let specifier = "D8" printfn $": " // Displays: D8: -00016325 let specifier = "E4" printfn $": " // Displays: E4: -1.6325E+004 let specifier = "e3" printfn $": " // Displays: e3: -1.633e+004 let specifier = "F" printfn $": " // Displays: F: -16325.00 let specifier = "N" printfn $": " // Displays: N: -16,325.00 let specifier = "P" printfn $": <(value / 100000).ToString specifier>" // Displays: P: -16.33 % let specifier = "X" printfn $": " // Displays: X: FFFFC03B // Use custom numeric format specifiers. let specifier = "0,0.000" printfn $": " // Displays: 0,0.000: -16,325.000 let specifier = "#,#.00#;(#,#.00#)" printfn $": <(value * -1).ToString specifier>" // Displays: #,#.00#;(#,#.00#): 16,325.00 
Dim value As Integer = -16325 Dim specifier As String ' Use standard numeric format specifier. specifier = "G" Console.WriteLine(": ", specifier, value.ToString(specifier)) ' Displays: G: -16325 specifier = "C" Console.WriteLine(": ", specifier, value.ToString(specifier)) ' Displays: C: ($16,325.00) specifier = "D8" Console.WriteLine(": ", specifier, value.ToString(specifier)) ' Displays: D8: -00016325 specifier = "E4" Console.WriteLine(": ", specifier, value.ToString(specifier)) ' Displays: E4: -1.6325E+004 specifier = "e3" Console.WriteLine(": ", specifier, value.ToString(specifier)) ' Displays: e3: -1.633e+004 specifier = "F" Console.WriteLine(": ", specifier, value.ToString(specifier)) ' Displays: F: -16325.00 specifier = "N" Console.WriteLine(": ", specifier, value.ToString(specifier)) ' Displays: N: -16,325.00 specifier = "P" Console.WriteLine(": ", specifier, (value/100000).ToString(specifier)) ' Displays: P: -16.33 % specifier = "X" Console.WriteLine(": ", specifier, value.ToString(specifier)) ' Displays: X: FFFFC03B ' Use custom numeric format specifiers. specifier = "0,0.000" Console.WriteLine(": ", specifier, value.ToString(specifier)) ' Displays: 0,0.000: -16,325.000 specifier = "#,#.00#;(#,#.00#)" Console.WriteLine(": ", specifier, (value*-1).ToString(specifier)) ' Displays: #,#.00#;(#,#.00#): 16,325.00 

Комментарии

Метод ToString(String) форматирует Int32 значение в указанном формате с помощью NumberFormatInfo объекта , представляющего соглашения текущего языка и региональных параметров. Если вы хотите использовать формат по умолчанию («G» или общий) или указать другой язык и региональные параметры, используйте другие перегрузки ToString метода следующим образом:

Использование формата Для языка и региональных параметров Использование перегрузки
Формат по умолчанию («G») Язык и региональные параметры по умолчанию (текущий) ToString()
Формат по умолчанию («G») Определенный язык и региональные параметры ToString(IFormatProvider)
Определенный формат Определенный язык и региональные параметры ToString(String, IFormatProvider)

Параметр format может быть любым допустимым описателем стандартного числового формата, за исключением «R», а также любым сочетанием описателей настраиваемого числового формата. Если format имеет значение null или является пустой строкой («»), возвращаемое значение этого экземпляра форматируется с помощью описателя общего числового формата («G»).

.NET предоставляет расширенную поддержку форматирования, которая более подробно описана в следующих разделах:

  • Дополнительные сведения об описателях числовых форматов см. в разделах Строки стандартного числового формата и Строки настраиваемого числового формата.
  • Дополнительные сведения о форматировании см. в разделе Типы форматирования.

Возвращаемое значение этого экземпляра отформатировано с использованием NumberFormatInfo для текущего языка и региональных параметров.

См. также раздел

  • Parse(String)
  • String
  • Типы форматирования в .NET
  • Строки стандартных числовых форматов
  • Строки настраиваемых числовых форматов
  • Практическое руководство. Добавление к числу начальных нулей

Применяется к

ToString(String, IFormatProvider)

Исходный код: Int32.cs Исходный код: Int32.cs Исходный код: Int32.cs

Преобразует числовое значение данного экземпляра в эквивалентное ему строковое представление с использованием указанного формата и сведений об особенностях форматирования для данного языка и региональных параметров.

public: virtual System::String ^ ToString(System::String ^ format, IFormatProvider ^ provider);
public string ToString (string format, IFormatProvider provider);
public string ToString (string? format, IFormatProvider? provider);
override this.ToString : string * IFormatProvider -> string
Public Function ToString (format As String, provider As IFormatProvider) As String
Параметры

Стандартная или пользовательская строка числового формата.

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

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

Строковое представление значения данного экземпляра, определяемое параметрами format и provider .

Реализации
Исключения

format является недопустимым или не поддерживается.

Примеры

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

using namespace System; using namespace System::Globalization; void main() < // Define cultures whose formatting conventions are to be used. array^ cultures = < CultureInfo::CreateSpecificCulture("en-US"), CultureInfo::CreateSpecificCulture("fr-FR"), CultureInfo::CreateSpecificCulture("es-ES") >; int positiveNumber = 1679; int negativeNumber = -3045; array^ specifiers = ; for each (String^ specifier in specifiers) < for each (CultureInfo^ culture in cultures) < // Display values with "G" format specifier. Console::WriteLine("format using culture: ", specifier, culture->Name, positiveNumber.ToString(specifier, culture), negativeNumber.ToString(specifier, culture)); > Console::WriteLine(); > > // The example displays the following output: // G format using en-US culture: 1679 -3045 // G format using fr-FR culture: 1679 -3045 // G format using es-ES culture: 1679 -3045 // // C format using en-US culture: $1,679.00 ($3,045.00) // C format using fr-FR culture: 1 679,00 € -3 045,00 € // C format using es-ES culture: 1.679,00 € -3.045,00 € // // D8 format using en-US culture: 00001679 -00003045 // D8 format using fr-FR culture: 00001679 -00003045 // D8 format using es-ES culture: 00001679 -00003045 // // E2 format using en-US culture: 1.68E+003 -3.05E+003 // E2 format using fr-FR culture: 1,68E+003 -3,05E+003 // E2 format using es-ES culture: 1,68E+003 -3,05E+003 // // F format using en-US culture: 1679.00 -3045.00 // F format using fr-FR culture: 1679,00 -3045,00 // F format using es-ES culture: 1679,00 -3045,00 // // N format using en-US culture: 1,679.00 -3,045.00 // N format using fr-FR culture: 1 679,00 -3 045,00 // N format using es-ES culture: 1.679,00 -3.045,00 // // P format using en-US culture: 167,900.00 % -304,500.00 % // P format using fr-FR culture: 167 900,00 % -304 500,00 % // P format using es-ES culture: 167.900,00 % -304.500,00 % // // X8 format using en-US culture: 0000068F FFFFF41B // X8 format using fr-FR culture: 0000068F FFFFF41B // X8 format using es-ES culture: 0000068F FFFFF41B 
// Define cultures whose formatting conventions are to be used. CultureInfo[] cultures = ; int positiveNumber = 1679; int negativeNumber = -3045; string[] specifiers = ; foreach (string specifier in specifiers) < foreach (CultureInfo culture in cultures) < // Display values with "G" format specifier. Console.WriteLine("format using culture: ", specifier, culture.Name, positiveNumber.ToString(specifier, culture), negativeNumber.ToString(specifier, culture)); > Console.WriteLine(); > // The example displays the following output: // G format using en-US culture: 1679 -3045 // G format using fr-FR culture: 1679 -3045 // G format using es-ES culture: 1679 -3045 // // C format using en-US culture: $1,679.00 ($3,045.00) // C format using fr-FR culture: 1 679,00 € -3 045,00 € // C format using es-ES culture: 1.679,00 € -3.045,00 € // // D8 format using en-US culture: 00001679 -00003045 // D8 format using fr-FR culture: 00001679 -00003045 // D8 format using es-ES culture: 00001679 -00003045 // // E2 format using en-US culture: 1.68E+003 -3.05E+003 // E2 format using fr-FR culture: 1,68E+003 -3,05E+003 // E2 format using es-ES culture: 1,68E+003 -3,05E+003 // // F format using en-US culture: 1679.00 -3045.00 // F format using fr-FR culture: 1679,00 -3045,00 // F format using es-ES culture: 1679,00 -3045,00 // // N format using en-US culture: 1,679.00 -3,045.00 // N format using fr-FR culture: 1 679,00 -3 045,00 // N format using es-ES culture: 1.679,00 -3.045,00 // // P format using en-US culture: 167,900.00 % -304,500.00 % // P format using fr-FR culture: 167 900,00 % -304 500,00 % // P format using es-ES culture: 167.900,00 % -304.500,00 % // // X8 format using en-US culture: 0000068F FFFFF41B // X8 format using fr-FR culture: 0000068F FFFFF41B // X8 format using es-ES culture: 0000068F FFFFF41B 
// Define cultures whose formatting conventions are to be used. let cultures = [ CultureInfo.CreateSpecificCulture "en-US" CultureInfo.CreateSpecificCulture "fr-FR" CultureInfo.CreateSpecificCulture "es-ES" ] let positiveNumber = 1679 let negativeNumber = -3045 let specifiers = [ "G"; "C"; "D8"; "E2"; "F"; "N"; "P"; "X8" ] for specifier in specifiers do for culture in cultures do // Display values format specifiers. printfn $" format using culture: " printfn "" // The example displays the following output: // G format using en-US culture: 1679 -3045 // G format using fr-FR culture: 1679 -3045 // G format using es-ES culture: 1679 -3045 // // C format using en-US culture: $1,679.00 ($3,045.00) // C format using fr-FR culture: 1 679,00 € -3 045,00 € // C format using es-ES culture: 1.679,00 € -3.045,00 € // // D8 format using en-US culture: 00001679 -00003045 // D8 format using fr-FR culture: 00001679 -00003045 // D8 format using es-ES culture: 00001679 -00003045 // // E2 format using en-US culture: 1.68E+003 -3.05E+003 // E2 format using fr-FR culture: 1,68E+003 -3,05E+003 // E2 format using es-ES culture: 1,68E+003 -3,05E+003 // // F format using en-US culture: 1679.00 -3045.00 // F format using fr-FR culture: 1679,00 -3045,00 // F format using es-ES culture: 1679,00 -3045,00 // // N format using en-US culture: 1,679.00 -3,045.00 // N format using fr-FR culture: 1 679,00 -3 045,00 // N format using es-ES culture: 1.679,00 -3.045,00 // // P format using en-US culture: 167,900.00 % -304,500.00 % // P format using fr-FR culture: 167 900,00 % -304 500,00 % // P format using es-ES culture: 167.900,00 % -304.500,00 % // // X8 format using en-US culture: 0000068F FFFFF41B // X8 format using fr-FR culture: 0000068F FFFFF41B // X8 format using es-ES culture: 0000068F FFFFF41B 
' Define cultures whose formatting conventions are to be used. Dim cultures() As CultureInfo = Dim positiveNumber As Integer = 1679 Dim negativeNumber As Integer = -3045 Dim specifiers() As String = For Each specifier As String In specifiers For Each culture As CultureInfo In Cultures ' Display values with "G" format specifier. Console.WriteLine(" format using culture: ", _ specifier, culture.Name, _ positiveNumber.ToString(specifier, culture), _ negativeNumber.ToString(specifier, culture)) Next Console.WriteLine() Next ' The example displays the following output to the console: ' G format using en-US culture: 1679 -3045 ' G format using fr-FR culture: 1679 -3045 ' G format using es-ES culture: 1679 -3045 ' ' C format using en-US culture: $1,679.00 ($3,045.00) ' C format using fr-FR culture: 1 679,00 € -3 045,00 € ' C format using es-ES culture: 1.679,00 € -3.045,00 € ' ' D8 format using en-US culture: 00001679 -00003045 ' D8 format using fr-FR culture: 00001679 -00003045 ' D8 format using es-ES culture: 00001679 -00003045 ' ' E2 format using en-US culture: 1.68E+003 -3.05E+003 ' E2 format using fr-FR culture: 1,68E+003 -3,05E+003 ' E2 format using es-ES culture: 1,68E+003 -3,05E+003 ' ' F format using en-US culture: 1679.00 -3045.00 ' F format using fr-FR culture: 1679,00 -3045,00 ' F format using es-ES culture: 1679,00 -3045,00 ' ' N format using en-US culture: 1,679.00 -3,045.00 ' N format using fr-FR culture: 1 679,00 -3 045,00 ' N format using es-ES culture: 1.679,00 -3.045,00 ' ' P format using en-US culture: 167,900.00 % -304,500.00 % ' P format using fr-FR culture: 167 900,00 % -304 500,00 % ' P format using es-ES culture: 167.900,00 % -304.500,00 % ' ' X8 format using en-US culture: 0000068F FFFFF41B ' X8 format using fr-FR culture: 0000068F FFFFF41B ' X8 format using es-ES culture: 0000068F FFFFF41B 

Комментарии

Метод ToString(String, IFormatProvider) форматирует Int32 значение в указанном формате с помощью NumberFormatInfo объекта указанного языка и региональных параметров. Если вы хотите использовать параметры формата или языка и региональных параметров по умолчанию, используйте другие перегрузки ToString метода следующим образом:

Использование формата Для языка и региональных параметров Использование перегрузки
Формат по умолчанию («G») Язык и региональные параметры по умолчанию (текущий) ToString()
Формат по умолчанию («G») Определенный язык и региональные параметры ToString(IFormatProvider)
Определенный формат Язык и региональные параметры по умолчанию (текущий) ToString(String)

Параметр format может быть стандартной или пользовательской строкой числового формата. Поддерживаются все строки стандартного числового формата, отличные от «R» (или «r»), как и все символы настраиваемого числового формата. Если format имеет значение null или пустую строку («»), возвращаемое значение для этого экземпляра форматируется с помощью описателя общего числового формата («G»).

Параметр provider — это объект, реализующий IFormatProvider интерфейс . Его GetFormat метод возвращает NumberFormatInfo объект , предоставляющий сведения о формате для конкретного языка и региональных параметров о формате строки, возвращаемой этим методом. Объект, реализующий , IFormatProvider может быть любым из следующих:

  • Объект CultureInfo , представляющий язык и региональные параметры, правила форматирования которых должны использоваться.
  • Объект NumberFormatInfo , содержащий определенные числовые сведения о форматировании для этого значения.
  • Пользовательский объект, реализующий IFormatProvider и метод которого GetFormat возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании.

Если provider имеет значение null или NumberFormatInfo объект не может быть получен из provider , возвращаемое значение для этого экземпляра форматируется с параметром NumberFormatInfo для текущего языка и региональных параметров.

.NET предоставляет расширенную поддержку форматирования, которая более подробно описана в следующих разделах:

  • Дополнительные сведения об описателях числовых форматов см. в разделах Строки стандартного числового формата и Строки настраиваемого числового формата.
  • Дополнительные сведения о форматировании см. в разделе Типы форматирования.

См. также раздел

  • Parse(String)
  • Типы форматирования в .NET
  • Строки стандартных числовых форматов
  • Строки настраиваемых числовых форматов
  • Практическое руководство. Добавление к числу начальных нулей
  • Пример: служебная программа форматирования .NET Core WinForms (C#)
  • Пример: служебная программа форматирования .NET Core WinForms (Visual Basic)

Tostring c что это

При выводе строк в консоли с помощью метода Console.WriteLine для встраивания значений в строку мы можем применять форматирование вместо конкатенации:

string name = "Tom"; int age = 23; Console.WriteLine("Имя: Возраст: ", name, age); // консольный вывод // Имя: Tom Возраст: 23

В строке «Имя: Возраст: » на место и затем будут вставляться в порядке следования значения переменныйх name и age

То же самое форматирование в строке мы можем сделать не только в методе Console.WriteLine, но и в любом месте программы с помощью метода string.Format :

string name = "Tom"; int age = 23; string output = string.Format("Имя: Возраст: ", name, age); Console.WriteLine(output);

Метод Format принимает строку с плейсхолдерами типа , и т.д., а также набор аргументов, которые вставляются на место данных плейсхолдеров. В итоге генерируется новая строка.

Спецификаторы форматирования

В методе Format могут использоваться различные спецификаторы и описатели, которые позволяют настроить вывод данных. Рассмотрим основные описатели. Все используемые форматы:

Задает формат денежной единицы, указывает количество десятичных разрядов после запятой

Целочисленный формат, указывает минимальное количество цифр

Экспоненциальное представление числа, указывает количество десятичных разрядов после запятой

Формат дробных чисел с фиксированной точкой, указывает количество десятичных разрядов после запятой

Задает более короткий из двух форматов: F или E

Также задает формат дробных чисел с фиксированной точкой, определяет количество разрядов после запятой

Задает отображения знака процентов рядом с число, указывает количество десятичных разрядов после запятой

Шестнадцатеричный формат числа

Форматирование валюты

Для форматирования валюты используется описатель «C»:

double number = 23.7; string result = string.Format("", number); Console.WriteLine(result); // 24 р. string result2 = string.Format("", number); Console.WriteLine(result2); // 23,70 р.

Число после описателя указывает, сколько чисел будет использоваться после разделителя между целой и дробной частью. При выводе также добавляется обозначение денежного знака для текущей культуры компьютера. В зависимости от локализации текущей операционной системы результат может различаться. Также обратите внимание на округление в первом примере.

Форматирование целых чисел

Для форматирования целочисленных значение применяется описатель «d»:

int number = 23; string result = string.Format("", number); Console.WriteLine(result); // 23 string result2 = string.Format("", number); Console.WriteLine(result2); // 0023

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

Форматирование дробных чисел

Для форматирования дробны чисел используется описатель F, число после которого указывает, сколько знаков будет использоваться после разделителя между целой и дробной частью. Если исходное число — целое, то к нему добавляются разделитель и нули.

int number = 23; string result = string.Format("", number); Console.WriteLine(result); // 23,00 double number2 = 45.08; string result2 = string.Format("", number2); Console.WriteLine(result2); // 45,0800 double number3 = 25.07; string result3 = string.Format("", number3); Console.WriteLine(result3); // 25,1
Формат процентов

Описатель «P» задает отображение процентов. Используемый с ним числовой спецификатор указывает, сколько знаков будет после запятой:

decimal number = 0.15345m; Console.WriteLine("", number);// 15,3%
Настраиваемые форматы

Используя знак #, можно настроить формат вывода. Например, нам надо вывести некоторое число в формате телефона +х (ххх)ххх-хх-хх:

long number = 19876543210; string result = string.Format("", number); Console.WriteLine(result); // +1 (987) 654-32-10

Метод ToString

Метод ToString() не только получает строковое описание объекта, но и может осуществлять форматирование. Он поддерживает те же описатели, что используются в методе Format:

long number = 19876543210; Console.WriteLine(number.ToString("+# (###) ###-##-##"));// +1 (987) 654-32-10 double money = 24.8; Console.WriteLine(money.ToString("C2")); // 24,80 р.

Интерполяция строк

Интерполяция строк призвана упростить форматирование строк. Так, перепишем пример с выводом значений переменных в строке:

string name = "Tom"; int age = 23; Console.WriteLine($"Имя: Возраст: "); // консольный вывод // Имя: Tom Возраст: 23

Знак доллара перед строкой указывает, что будет осуществляться интерполяция строк. Внутри строки опять же используются плейсхолдеры <. >, только внутри фигурных скобок уже можно напрямую писать те выражения, которые мы хотим вывести.

Интерполяция по сути представляет более лаконичное форматирование. При этом внутри фигурных скобок мы можем указывать не только свойства, но и различные выражения языка C#:

int x = 8; int y = 7; string result = $" + = "; Console.WriteLine(result); // 8 + 7 = 15

Также внутри фигурных скобок можно выполнять более сложные выражения, например, вызывать методы:

int x = 8; int y = 7; string result = $" * = "; Console.WriteLine(result); // 8 * 7 = 56 int Multiply(int a, int b) => a * b;

Уже внутри строки можно применять форматирование. В этом случае мы можем применять все те же описатели, что и в методе Format . Например, выведем номер телефона в формате +x xxx-xxx-xx-xx:

long number = 19876543210; Console.WriteLine($""); // +1 987 654 32 10

Добавляем пространство до и после форматируемого вывода:

string name = "Tom"; int age = 23; Console.WriteLine($"Имя: Возраст: "); // пробелы после Console.WriteLine($"Имя: Возраст: "); // пробелы до
Имя: Том Возраст: 23 Имя: Том Возраст: 23

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *