Esta documentación está archivada y no tiene mantenimiento.

IFormattable (Interfaz)

Actualización: noviembre 2007

Proporciona funcionalidad para dar formato al valor de un objeto en una representación de cadena.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)]
public interface IFormattable
/** @attribute ComVisibleAttribute(true) */
public interface IFormattable
public interface IFormattable

Los tipos de datos base implementan IFormattable.

Un formato describe la apariencia de un objeto cuando se convierte en una cadena. Puede ser estándar o personalizado. Un formato estándar adopta la forma Axx, donde A es un carácter alfabético denominado especificador de formato y xx es un entero no negativo denominado especificador de precisión. El especificador de formato controla el tipo de formato que se aplica al valor que se va a representar en forma de cadena. El especificador de precisión controla el número de dígitos significativos o posiciones decimales de la cadena, si procede. Un formato personalizado está compuesto de uno o más caracteres alfabéticos que juntos definen una cadena de formato único.

Cuando un formato incluye símbolos que varían según la referencia cultural, como el símbolo de moneda representado por los especificadores de formato numérico estándar "c" y "C", un objeto de formato (en el caso de los especificadores "c" y "C", un objeto NumberFormatInfo ) proporciona los caracteres reales utilizados en la representación de cadena. Un método puede incluir un parámetro para pasar un objeto IFormatProvider que proporciona un objeto de formato, o el método puede utilizar el objeto de formato predeterminado, que contiene las definiciones de símbolo para el subproceso actual. El subproceso actual utiliza normalmente el mismo conjunto de símbolos que se utilizan de forma predeterminada en todo el sistema.

Para obtener información detallada sobre las cadenas con formato personalizado y estándar para los tipos numéricos, vea Cadenas de formato numérico. Para obtener información detallada sobre las cadenas con formato personalizado y estándar para la estructura DateTime, vea Cadenas de formato de fecha y hora.

Notas para los implementadores:

Las clases que requieren un control sobre el formato de cadenas mayor que el que proporciona Object.ToString deben implementar IFormattable, cuyo método ToString utiliza la propiedad CurrentCulture del subproceso actual.

Una clase que implementa IFormattable debe admitir el código de formato "G" (general). Además del código "G", la clase puede definir la lista de códigos de formato que admite.

Para obtener más información sobre formato y códigos de formato, vea Información general sobre formatos.

En el siguiente ejemplo se muestra cómo definir un tipo que implementa la interfaz IFormattable. En el ejemplo se muestra también cómo llamar al método ToString de la interfaz IFormattable.

using System;

class Point : IFormattable
{
    public int x, y;

    public Point(int x, int y)
    {
        this.x = x;
        this.y = y;
    }

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

    public String ToString(String format, IFormatProvider fp)
    {
        // If no format is passed, display like this: (x, y).
        if (format == null) return String.Format("({0}, {1})", x, y);

        // For "x" formatting, return just the x value as a string
        if (format == "x") return x.ToString();

        // For "y" formatting, return just the y value as a string
        if (format == "y") return y.ToString();

        // For any unrecognized format, throw an exception.
        throw new FormatException(String.Format("Invalid format string: '{0}'.", format));
    }
}


public sealed class App
{
    static void Main()
    {
        // Create the object.
        Point p = new Point(5, 98);

        // Test ToString with no formatting.
        Console.WriteLine("This is my point: " + p.ToString());

        // Use custom formatting style "x"
        Console.WriteLine("The point's x value is {0:x}", p);

        // Use custom formatting style "y"
        Console.WriteLine("The point's y value is {0:y}", p);

        try 
        {
            // Use an invalid format; FormatException should be thrown here.
            Console.WriteLine("Invalid way to format a point: {0:XYZ}", p);
        }
        catch (FormatException e)
        {
            Console.WriteLine("The last line could not be displayed: {0}", e.Message);
        }
    }
}

// This code produces the following output.
// 
//  This is my point: (5, 98)
//  The point's x value is 5
//  The point's y value is 98
//  The last line could not be displayed: Invalid format string: 'XYZ'.


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0
Mostrar: