İngilizce dilinde oku

Aracılığıyla paylaş


IFormattable Arabirim

Tanım

Bir nesnenin değerini dize gösterimine biçimlendirme işlevselliği sağlar.

C#
public interface IFormattable
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface IFormattable
Türetilmiş
Öznitelikler

Örnekler

Aşağıdaki örnek, arabirimini uygulayan IFormattable bir Temperature sınıfı tanımlar. sınıfı, sıcaklığın Santigrat'ta görüntüleneceğini belirten dört biçim belirticisini destekler: "G" ve "C"; Sıcaklığın Fahrenheit'te görüntüleneceğini gösteren "F"; ve "K", sıcaklığın Kelvin'de görüntüleneceğini gösterir. Buna ek olarak, IFormattable.ToString uygulama veya boş bir biçim dizesini null de işleyebilir. sınıfı tarafından Temperature tanımlanan diğer iki ToString yöntem, uygulamaya bir çağrı sarmalarIFormattable.ToString.

C#
using System;
using System.Globalization;

public class Temperature : IFormattable
{
   private decimal temp;

   public Temperature(decimal temperature)
   {
      if (temperature < -273.15m)
        throw new ArgumentOutOfRangeException(String.Format("{0} is less than absolute zero.",
                                              temperature));
      this.temp = temperature;
   }

   public decimal Celsius
   {
      get { return temp; }
   }

   public decimal Fahrenheit
   {
      get { return temp * 9 / 5 + 32; }
   }

   public decimal Kelvin
   {
      get { return temp + 273.15m; }
   }

   public override string ToString()
   {
      return this.ToString("G", CultureInfo.CurrentCulture);
   }

   public string ToString(string format)
   {
      return this.ToString(format, CultureInfo.CurrentCulture);
   }

   public string ToString(string format, IFormatProvider provider)
   {
      if (String.IsNullOrEmpty(format)) format = "G";
      if (provider == null) provider = CultureInfo.CurrentCulture;

      switch (format.ToUpperInvariant())
      {
         case "G":
         case "C":
            return temp.ToString("F2", provider) + " °C";
         case "F":
            return Fahrenheit.ToString("F2", provider) + " °F";
         case "K":
            return Kelvin.ToString("F2", provider) + " K";
         default:
            throw new FormatException(String.Format("The {0} format string is not supported.", format));
      }
   }
}

Aşağıdaki örnek, uygulamayı doğrudan veya bileşik biçim dizesi kullanarak çağırır IFormattable.ToString .

C#
public class Example
{
   public static void Main()
   {
      // Use composite formatting with format string in the format item.
      Temperature temp1 = new Temperature(0);
      Console.WriteLine("{0:C} (Celsius) = {0:K} (Kelvin) = {0:F} (Fahrenheit)\n", temp1);

      // Use composite formatting with a format provider.
      temp1 = new Temperature(-40);
      Console.WriteLine(String.Format(CultureInfo.CurrentCulture, "{0:C} (Celsius) = {0:K} (Kelvin) = {0:F} (Fahrenheit)", temp1));
      Console.WriteLine(String.Format(new CultureInfo("fr-FR"), "{0:C} (Celsius) = {0:K} (Kelvin) = {0:F} (Fahrenheit)\n", temp1));

      // Call ToString method with format string.
      temp1 = new Temperature(32);
      Console.WriteLine("{0} (Celsius) = {1} (Kelvin) = {2} (Fahrenheit)\n",
                        temp1.ToString("C"), temp1.ToString("K"), temp1.ToString("F"));

      // Call ToString with format string and format provider
      temp1 = new Temperature(100)      ;
      NumberFormatInfo current = NumberFormatInfo.CurrentInfo;
      CultureInfo nl = new CultureInfo("nl-NL");
      Console.WriteLine("{0} (Celsius) = {1} (Kelvin) = {2} (Fahrenheit)",
                        temp1.ToString("C", current), temp1.ToString("K", current), temp1.ToString("F", current));
      Console.WriteLine("{0} (Celsius) = {1} (Kelvin) = {2} (Fahrenheit)",
                        temp1.ToString("C", nl), temp1.ToString("K", nl), temp1.ToString("F", nl));
   }
}
// The example displays the following output:
//    0.00 °C (Celsius) = 273.15 K (Kelvin) = 32.00 °F (Fahrenheit)
//
//    -40.00 °C (Celsius) = 233.15 K (Kelvin) = -40.00 °F (Fahrenheit)
//    -40,00 °C (Celsius) = 233,15 K (Kelvin) = -40,00 °F (Fahrenheit)
//
//    32.00 °C (Celsius) = 305.15 K (Kelvin) = 89.60 °F (Fahrenheit)
//
//    100.00 °C (Celsius) = 373.15 K (Kelvin) = 212.00 °F (Fahrenheit)
//    100,00 °C (Celsius) = 373,15 K (Kelvin) = 212,00 °F (Fahrenheit)

Açıklamalar

Arabirim, IFormattable bir nesneyi bir biçim dizesini ve biçim sağlayıcısını temel alarak dize gösterimine dönüştürür.

Biçim dizesi genellikle bir nesnenin genel görünümünü tanımlar. Örneğin, .NET Framework aşağıdakileri destekler:

Uygulama tanımlı türlerinizin biçimlendirmesini desteklemek için kendi biçim dizelerinizi de tanımlayabilirsiniz.

Biçim sağlayıcısı genellikle bir nesneyi dize gösterimine dönüştürürken kullanılan simgeleri tanımlayan bir biçimlendirme nesnesi döndürür. Örneğin, bir sayıyı para birimi değerine dönüştürdüğünüzde, biçim sağlayıcısı sonuç dizesinde görünen para birimi simgesini tanımlar. .NET Framework üç biçim sağlayıcısı tanımlar:

Ayrıca, biçimlendirmede kullanılan kültüre, mesleğe özgü veya sektöre özgü bilgileri sağlamak için kendi özel biçim sağlayıcılarınızı tanımlayabilirsiniz. Özel biçim sağlayıcısı kullanarak özel biçimlendirme uygulama hakkında daha fazla bilgi için bkz ICustomFormatter. .

IFormattable Arabirimi, ToStringuygulama türü için biçimlendirme hizmetleri sağlayan tek bir yöntem tanımlar. ToString yöntemi doğrudan çağrılabilir. Ayrıca, ve Convert.ToString(Object, IFormatProvider) yöntemleri ve Convert.ToString(Object) .NET Framework bileşik biçimlendirme özelliğini kullanan yöntemler tarafından otomatik olarak çağrılır. Bu tür yöntemler arasında Console.WriteLine(String, Object), String.Formatve StringBuilder.AppendFormat(String, Object)bulunur. ToString yöntemi, yöntemin biçim dizesindeki her biçim öğesi için çağrılır.

Arabirim IFormattable , temel veri türleri tarafından uygulanır.

Uygulayanlara Notlar

Dizelerin biçimlendirmesi üzerinde sağladığından ToString() daha fazla denetim gerektiren sınıfların uygulaması IFormattablegerekir.

Uygulayan IFormattable bir sınıfın "G" (genel) biçim tanımlayıcısını desteklemesi gerekir. "G" tanımlayıcısının yanı sıra sınıfı, desteklediği biçim tanımlayıcılarının listesini tanımlayabilir. Buna ek olarak, sınıfı olan bir biçim belirticiyi nullişlemeye hazır olmalıdır. Biçimlendirme ve biçimlendirme kodları hakkında daha fazla bilgi için bkz . Biçimlendirme Türleri

Yöntemler

ToString(String, IFormatProvider)

Belirtilen biçimi kullanarak geçerli örneğin değerini biçimlendirebilir.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.