Tento článek byl přeložený strojově. Pokud chcete zobrazit článek v angličtině, zaškrtněte políčko Angličtina. Anglickou verzi článku můžete také zobrazit v místním okně přesunutím ukazatele myši nad text.
Překlad
Angličtina

Metoda Convert.ToString (Object, IFormatProvider)

.NET Framework (current version)
 

Publikováno: srpen 2016

Převede hodnotu zadaného objektu na její ekvivalentní řetězcové vyjádření pomocí zadané informace o formátování specifické pro jazykovou verzi.

Obor názvů:   System
Sestavení:  mscorlib (v mscorlib.dll)

public static string ToString(
	object value,
	IFormatProvider provider
)

Parametry

value
Type: System.Object

Objekt, který poskytuje hodnota, kterou chcete převést, nebo null.

provider
Type: System.IFormatProvider

Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi.

Návratová hodnota

Type: System.String

Řetězcové vyjádření value, nebo String.Empty Pokud value je objekt, jehož hodnota je null. Pokud value je null, metoda vrátí null.

Pokud value parametr implementuje IConvertible rozhraní, volání metod IConvertible.ToString(IFormatProvider)provádění value. Jinak, pokud value parametr implementuje IFormattable rozhraní, volání metod jeho IFormattable.ToString(String, IFormatProvider)implementace. Pokud value implementuje ani rozhraní volání metod value parametru ToString() Metoda a provider parametr je ignorován.

provider Parametr se používá, pokud value parametr implementuje IConvertible nebo IFormattable rozhraní. Nejběžnější použití provider parametr slouží k zadání informace specifické pro jazykovou verzi používané při převodu value. Například pokud value parametr je záporné číslo desítkové soustavy, provider parametr lze zadat informace specifické jazykové verze o notaci používané pro záporné znaménko a oddělovač desetinných míst. Druhý příklad v následující části ukazuje poskytovatele formátu, který neposkytuje informace o formátování zohledňující jazykovou verzi.

Následující příklad definuje Temperature třídu, která přepíše Object.ToString Metoda, ale neimplementuje IConvertible rozhraní. Příklad ukazuje, jak volání Convert.ToString(Object, IFormatProvider) zase, volání metody, Temperature.ToString Metoda.

using System;

public class Temperature
{
   private decimal m_Temp;

   public Temperature(decimal temperature)
   {
      this.m_Temp = temperature;
   }

   public decimal Celsius
   {
      get { return this.m_Temp; }   
   }

   public decimal Kelvin
   {
      get { return this.m_Temp + 273.15m; }    
   }

   public decimal Fahrenheit
   {
      get { return Math.Round((decimal) (this.m_Temp * 9 / 5 + 32), 2); }
   }

   public override string ToString()
   {
      return m_Temp.ToString("N2") + " °C";
   }

}

public class Example
{
   public static void Main()
   {
      Temperature cold = new Temperature(-40);
      Temperature freezing = new Temperature(0);
      Temperature boiling = new Temperature(100);

      Console.WriteLine(Convert.ToString(cold, null));
      Console.WriteLine(Convert.ToString(freezing, null));
      Console.WriteLine(Convert.ToString(boiling, null));
   }
}
// The example dosplays the following output:
//       -40.00 °C
//       0.00 °C
//       100.00 °C

Následující příklad definuje Temperature třídu, která implementuje IFormattable rozhraní, ale neimplementuje IConvertible rozhraní. Jeho IFormattable.ToStringpředstavuje implementaci Temperature hodnotu v Celsia Fahrenheita či Kelvin, v závislosti na řetězec formátu. Příklad také definuje TemperatureProvider třídu, která implementuje IFormatProvider a poskytuje náhodně generované formátovací řetězec, který je používán IFormattable provádění Temperature třídy.

using System;

public class Temperature : IFormattable 
{
   private decimal m_Temp; 

   public Temperature(decimal temperature)
   {
      this.m_Temp = temperature;
   } 

   public decimal Celsius 
   { get { return this.m_Temp; } } 

   public decimal Kelvin 
   { get { return this.m_Temp + 273.15m; } }   

   public decimal Fahrenheit
   {  get { return Math.Round(this.m_Temp * 9m / 5m + 32m, 2); } }

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

   public String ToString(String fmt, IFormatProvider provider) 
   {
      TemperatureProvider formatter = null;
      if (provider != null) 
         formatter = provider.GetFormat(typeof(TemperatureProvider)) 
                                       as TemperatureProvider;

      if (String.IsNullOrWhiteSpace(fmt)) {
         if (formatter != null) 
            fmt = formatter.Format;
         else
            fmt = "G";
      }

      switch (fmt.ToUpper()) {
         case "G":
         case "C":
            return m_Temp.ToString("N2") + " °C"; 
         case "F":
            return Fahrenheit.ToString("N2") + " °F";
         case "K":
            return Kelvin.ToString("N2") + " K";
         default:
            throw new FormatException(String.Format("'{0}' is not a valid format specifier.", fmt));
      }
   }                             
} 

public class TemperatureProvider : IFormatProvider
{
   private String[] fmtStrings = { "C", "G", "F", "K" };
   private Random rnd = new Random();

   public Object GetFormat(Type formatType) 
   { 
      return this; 
   }

   public String Format
   { get { return fmtStrings[rnd.Next(0, fmtStrings.Length)]; } }
}

public class Example
{
   public static void Main()
   {
      Temperature cold = new Temperature (-40);
      Temperature freezing = new Temperature (0);
      Temperature boiling = new Temperature (100);

      TemperatureProvider tp = new TemperatureProvider();

      Console.WriteLine(Convert.ToString(cold, tp));
      Console.WriteLine(Convert.ToString(freezing, tp));
      Console.WriteLine(Convert.ToString(boiling, tp));
   }
}
// The example displays output like the following:
//       -40.00 °C
//       273.15 K
//       100.00 °C

Univerzální platforma Windows
K dispozici od 8
.NET Framework
K dispozici od 1.1
Přenosná knihovna tříd
Podporováno v: přenosné platformy .NET
Silverlight
K dispozici od 2.0
Windows Phone Silverlight
K dispozici od 7.0
Windows Phone
K dispozici od 8.1
Zpět na začátek
Zobrazit: