.NET 'teki biçim türleriFormat types in .NET

Biçimlendirme, bir sınıf, yapı veya numaralandırma değerinin bir örneğini dize gösterimine dönüştürme işlemidir. böylece, sonuçta elde edilen dize kullanıcılara görüntülenebilir veya orijinal veri türünü geri yüklemek için seri durumdan çıkarılmış olur.Formatting is the process of converting an instance of a class, structure, or enumeration value to its string representation, often so that the resulting string can be displayed to users or deserialized to restore the original data type. Bu dönüştürme bir dizi zorluklara neden olabilir:This conversion can pose a number of challenges:

  • Değerlerin dahili olarak depolandığı yol, kullanıcıların bunları görüntülemek istedikleri yöntemi göstermez.The way that values are stored internally does not necessarily reflect the way that users want to view them. Örneğin, bir telefon numarası, Kullanıcı dostu olmayan 8009999999 biçiminde depolanabilir.For example, a telephone number might be stored in the form 8009999999, which is not user-friendly. Bunun yerine 800-999-9999 olarak gösterilmesi gerekir.It should instead be displayed as 800-999-9999. Bu şekilde bir sayıyı biçimlendiren bir örnek için özel biçim dizeleri bölümüne bakın.See the Custom Format Strings section for an example that formats a number in this way.

  • Bazen bir nesnenin dize gösterimine dönüştürülmesi sezgisel değildir.Sometimes the conversion of an object to its string representation is not intuitive. Örneğin, bir sıcaklık nesnesinin veya bir kişi nesnesinin dize gösteriminin nasıl görünmesi net değildir.For example, it is not clear how the string representation of a Temperature object or a Person object should appear. Bir sıcaklık nesnesini çeşitli yollarla biçimlendiren bir örnek için bkz. standart biçim dizeleri bölümü.For an example that formats a Temperature object in a variety of ways, see the Standard Format Strings section.

  • Değerler genellikle kültüre duyarlı biçimlendirme gerektirir.Values often require culture-sensitive formatting. Örneğin, parasal değerleri yansıtmak için sayı kullanan bir uygulamada, sayısal dizeler geçerli kültürün para birimi simgesini, Grup ayırıcısını (çoğu kültürde, binlerce ayırıcıdır) ve ondalık sembolünü içermelidir.For example, in an application that uses numbers to reflect monetary values, numeric strings should include the current culture’s currency symbol, group separator (which, in most cultures, is the thousands separator), and decimal symbol. Bir örnek için, biçim sağlayıcıları Ile kültüre duyarlı biçimlendirme bölümüne bakın.For an example, see the Culture-sensitive formatting with format providers section.

  • Uygulamanın aynı değeri farklı şekillerde görüntülemesi gerekebilir.An application may have to display the same value in different ways. Örneğin, bir uygulama, adının bir dize gösterimini görüntüleyerek veya onun temel aldığı değerini görüntüleyerek bir numaralandırma üyesini temsil edebilir.For example, an application may represent an enumeration member by displaying a string representation of its name or by displaying its underlying value. DayOfWeek sabit listesinin bir üyesini farklı yollarla biçimlendiren bir örnek için bkz. standart biçim dizeleri bölümü.For an example that formats a member of the DayOfWeek enumeration in different ways, see the Standard Format Strings section.

Not

Biçimlendirme bir türün değerini dize temsiline dönüştürür.Formatting converts the value of a type into a string representation. Ayrıştırma biçimlendirmenin tersidir.Parsing is the inverse of formatting. Bir ayrıştırma işlemi, dize gösteriminden bir veri türü örneği oluşturur.A parsing operation creates an instance of a data type from its string representation. Dizeleri diğer veri türlerine dönüştürme hakkında daha fazla bilgi için bkz. dizeleri ayrıştırma.For information about converting strings to other data types, see Parsing Strings.

.NET, geliştiricilerin bu gereksinimleri ele almasını sağlayan zengin biçimlendirme desteği sağlar..NET provides rich formatting support that enables developers to address these requirements.

.NET 'te biçimlendirmeFormatting in .NET

Biçimlendirme için temel mekanizma, bu konunun ilerleyen kısımlarında yer olarak ToString yöntemi kullanılarak varsayılan biçimlendirme bölümünde açıklanan Object.ToString yönteminin varsayılan uygulamasıdır.The basic mechanism for formatting is the default implementation of the Object.ToString method, which is discussed in the Default Formatting Using the ToString Method section later in this topic. Ancak .NET, varsayılan biçimlendirme desteğini değiştirmek ve genişletmek için çeşitli yollar sunar.However, .NET provides several ways to modify and extend its default formatting support. Bunlar aşağıdakileri içerir:These include the following:

  • Bir nesnenin değerinin özel bir dize gösterimini tanımlamak için Object.ToString yöntemini geçersiz kılma.Overriding the Object.ToString method to define a custom string representation of an object’s value. Daha fazla bilgi için bu konunun ilerleyen kısımlarındaki ToString yöntemini geçersiz kılma bölümüne bakın.For more information, see the Override the ToString Method section later in this topic.

  • Bir nesnenin değerinin dize gösterimine birden çok form geçirmesine imkan tanıyan biçim belirticileri tanımlama.Defining format specifiers that enable the string representation of an object’s value to take multiple forms. Örneğin, aşağıdaki deyimdeki "X" Biçim belirleyicisi bir tamsayıyı onaltılık bir değerin dize gösterimine dönüştürür.For example, the "X" format specifier in the following statement converts an integer to the string representation of a hexadecimal value.

    int integerValue = 60312;
    Console.WriteLine(integerValue.ToString("X"));   // Displays EB98.
    
    Dim integerValue As Integer = 60312
    Console.WriteLine(integerValue.ToString("X"))   ' Displays EB98.
    

    Biçim belirticileri hakkında daha fazla bilgi için bkz. ToString yöntemi ve biçim dizeleri bölümü.For more information about format specifiers, see the ToString Method and Format Strings section.

  • Belirli bir kültürün biçimlendirme kurallarından yararlanmak için biçim sağlayıcıları kullanma.Using format providers to take advantage of the formatting conventions of a specific culture. Örneğin, aşağıdaki ifade, en-US kültürün biçimlendirme kurallarını kullanarak bir para birimi değeri görüntüler.For example, the following statement displays a currency value by using the formatting conventions of the en-US culture.

    double cost = 1632.54; 
    Console.WriteLine(cost.ToString("C", 
                      new System.Globalization.CultureInfo("en-US")));   
    // The example displays the following output:
    //       $1,632.54
    
    Dim cost As Double = 1632.54
    Console.WriteLine(cost.ToString("C", New System.Globalization.CultureInfo("en-US")))
    ' The example displays the following output:
    '       $1,632.54
    

    Biçim sağlayıcılarıyla biçimlendirme hakkında daha fazla bilgi için, biçim sağlayıcıları bölümüne bakın.For more information about formatting with format providers, see the Format Providers section.

  • Convert sınıfı ve bileşik biçimlendirme ile her iki dize dönüştürmeyi desteklemek için IFormattable arabirimini uygulama.Implementing the IFormattable interface to support both string conversion with the Convert class and composite formatting. Daha fazla bilgi için IFormattable arabirimi bölümüne bakın.For more information, see the IFormattable Interface section.

  • Daha büyük bir dizedeki bir değerin dize gösterimini katıştırmak için bileşik biçimlendirme kullanma.Using composite formatting to embed the string representation of a value in a larger string. Daha fazla bilgi için Bileşik biçimlendirme bölümüne bakın.For more information, see the Composite Formatting section.

  • ICustomFormatter ve IFormatProvider bir bütün özel biçimlendirme çözümü sağlamak için uygulama.Implementing ICustomFormatter and IFormatProvider to provide a complete custom formatting solution. Daha fazla bilgi için ıccustomformatter Ile özel biçimlendirme bölümüne bakın.For more information, see the Custom Formatting with ICustomFormatter section.

Aşağıdaki bölümlerde, bir nesneyi dize gösterimine dönüştürmeye yönelik bu yöntemler incelenmekte.The following sections examine these methods for converting an object to its string representation.

ToString yöntemini kullanarak varsayılan biçimlendirmeDefault formatting using the ToString method

System.Object türetilen her tür, varsayılan olarak türün adını döndüren parametresiz ToString yöntemini otomatik olarak devralır.Every type that is derived from System.Object automatically inherits a parameterless ToString method, which returns the name of the type by default. Aşağıdaki örnekte, varsayılan ToString yöntemi gösterilmektedir.The following example illustrates the default ToString method. Uygulama içermeyen Automobile adlı bir sınıfı tanımlar.It defines a class named Automobile that has no implementation. Sınıf örneği oluşturulduğunda ve ToString yöntemi çağrıldığında, onun tür adını görüntüler.When the class is instantiated and its ToString method is called, it displays its type name. ToString yönteminin örnekte açıkça çağrılmadığını unutmayın.Note that the ToString method is not explicitly called in the example. Console.WriteLine(Object) yöntemi, bir bağımsız değişken olarak kendisine geçirilen nesnenin ToString yöntemini dolaylı olarak çağırır.The Console.WriteLine(Object) method implicitly calls the ToString method of the object passed to it as an argument.

using System;

public class Automobile
{
   // No implementation. All members are inherited from Object.
}

public class Example
{
   public static void Main()
   {
      Automobile firstAuto = new Automobile();
      Console.WriteLine(firstAuto);
   }
}
// The example displays the following output:
//       Automobile
Public Class Automobile
   ' No implementation. All members are inherited from Object.
End Class

Module Example
   Public Sub Main()
      Dim firstAuto As New Automobile()
      Console.WriteLine(firstAuto)
   End Sub
End Module
' The example displays the following output:
'       Automobile

Uyarı

Windows 8.1 başlayarak, Windows Çalışma Zamanı, varsayılan biçimlendirme desteği sağlayan ıtringable. ToStringadlı tek bir yönteme sahip bir IStringable arabirimi içerir.Starting with Windows 8.1, the Windows Runtime includes an IStringable interface with a single method, IStringable.ToString, which provides default formatting support. Ancak, yönetilen türlerin IStringable arabirimini uygulamamalarını öneririz.However, we recommend that managed types do not implement the IStringable interface. Daha fazla bilgi için Object.ToString başvuru sayfasındaki "Windows Çalışma Zamanı ve IStringable arabirimi" bölümüne bakın.For more information, see "The Windows Runtime and the IStringable Interface" section on the Object.ToString reference page.

Arabirimler dışındaki tüm türler Objecttüretildiğinden, bu işlev özel sınıflarınıza veya yapılarına otomatik olarak sağlanır.Because all types other than interfaces are derived from Object, this functionality is automatically provided to your custom classes or structures. Ancak, varsayılan ToString yöntemi tarafından sunulan işlevsellik sınırlıdır: türü tanımlasa da, türün bir örneği hakkında herhangi bir bilgi sağlamaz.However, the functionality offered by the default ToString method, is limited: Although it identifies the type, it fails to provide any information about an instance of the type. Bu nesne hakkında bilgi sağlayan bir nesnenin dize gösterimini sağlamak için ToString yöntemini geçersiz kılmanız gerekir.To provide a string representation of an object that provides information about that object, you must override the ToString method.

Not

Yapılar ValueTypedevralınır, bu da Objecttüretilir.Structures inherit from ValueType, which in turn is derived from Object. ValueType, Object.ToStringgeçersiz kılsa da, uygulama aynıdır.Although ValueType overrides Object.ToString, its implementation is identical.

ToString yöntemini geçersiz kılmaOverride the ToString method

Bir türün adının görüntülenmesi genellikle sınırlı kullanıma sahiptir ve türlerinizin tüketicilerinin bir örneği diğerinden ayırt edilmesine izin vermez.Displaying the name of a type is often of limited use and does not allow consumers of your types to differentiate one instance from another. Ancak, bir nesnenin değerinin daha kullanışlı bir temsilini sağlamak için ToString yöntemini geçersiz kılabilirsiniz.However, you can override the ToString method to provide a more useful representation of an object’s value. Aşağıdaki örnek, bir Temperature nesnesini tanımlar ve ToString metodunu, sıcaklığın santigrat derece cinsinden gösterilmesi için geçersiz kılar.The following example defines a Temperature object and overrides its ToString method to display the temperature in degrees Celsius.

using System;

public class Temperature
{
   private decimal temp;
   
   public Temperature(decimal temperature)
   {
      this.temp = temperature;   
   }

   public override string ToString()
   {
      return this.temp.ToString("N1") + "°C";
   }
}

public class Example
{
   public static void Main()
   {
      Temperature currentTemperature = new Temperature(23.6m);
      Console.WriteLine("The current temperature is " +
                        currentTemperature.ToString());
   }
}
// The example displays the following output:
//       The current temperature is 23.6°C.
Public Class Temperature
   Private temp As Decimal
   
   Public Sub New(temperature As Decimal)
      Me.temp = temperature
   End Sub
   
   Public Overrides Function ToString() As String
      Return Me.temp.ToString("N1") + "°C"   
   End Function
End Class

Module Example
   Public Sub Main()
      Dim currentTemperature As New Temperature(23.6d)
      Console.WriteLine("The current temperature is " +
                        currentTemperature.ToString())
   End Sub
End Module
' The example displays the following output:
'       The current temperature is 23.6°C.

.NET ' te, her ilkel değer türünün ToString yöntemi, nesnenin değerini adı yerine göstermek için geçersiz kılınır.In .NET, the ToString method of each primitive value type has been overridden to display the object’s value instead of its name. Aşağıdaki tabloda her ilkel tür için geçersiz kılma gösterilmektedir.The following table shows the override for each primitive type. Geçersiz kılınan yöntemlerin çoğu ToString yönteminin başka bir aşırı yüklemesini çağırır ve bunu, türü için genel biçimi ve geçerli kültürü temsil eden bir IFormatProvider nesnesini tanımlayan "G" biçim belirticisini geçirdiğini unutmayın.Note that most of the overridden methods call another overload of the ToString method and pass it the "G" format specifier, which defines the general format for its type, and an IFormatProvider object that represents the current culture.

TürType ToString geçersiz kılmaToString override
Boolean Boolean.TrueString ya da Boolean.FalseStringdöndürür.Returns either Boolean.TrueString or Boolean.FalseString.
Byte Geçerli kültürün Byte değerini biçimlendirmek için Byte.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls Byte.ToString("G", NumberFormatInfo.CurrentInfo) to format the Byte value for the current culture.
Char Karakteri dize olarak döndürür.Returns the character as a string.
DateTime Geçerli kültürün tarih ve saat değerini biçimlendirmek için DateTime.ToString("G", DatetimeFormatInfo.CurrentInfo) çağırır.Calls DateTime.ToString("G", DatetimeFormatInfo.CurrentInfo) to format the date and time value for the current culture.
Decimal Geçerli kültürün Decimal değerini biçimlendirmek için Decimal.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls Decimal.ToString("G", NumberFormatInfo.CurrentInfo) to format the Decimal value for the current culture.
Double Geçerli kültürün Double değerini biçimlendirmek için Double.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls Double.ToString("G", NumberFormatInfo.CurrentInfo) to format the Double value for the current culture.
Int16 Geçerli kültürün Int16 değerini biçimlendirmek için Int16.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls Int16.ToString("G", NumberFormatInfo.CurrentInfo) to format the Int16 value for the current culture.
Int32 Geçerli kültürün Int32 değerini biçimlendirmek için Int32.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls Int32.ToString("G", NumberFormatInfo.CurrentInfo) to format the Int32 value for the current culture.
Int64 Geçerli kültürün Int64 değerini biçimlendirmek için Int64.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls Int64.ToString("G", NumberFormatInfo.CurrentInfo) to format the Int64 value for the current culture.
SByte Geçerli kültürün SByte değerini biçimlendirmek için SByte.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls SByte.ToString("G", NumberFormatInfo.CurrentInfo) to format the SByte value for the current culture.
Single Geçerli kültürün Single değerini biçimlendirmek için Single.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls Single.ToString("G", NumberFormatInfo.CurrentInfo) to format the Single value for the current culture.
UInt16 Geçerli kültürün UInt16 değerini biçimlendirmek için UInt16.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls UInt16.ToString("G", NumberFormatInfo.CurrentInfo) to format the UInt16 value for the current culture.
UInt32 Geçerli kültürün UInt32 değerini biçimlendirmek için UInt32.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls UInt32.ToString("G", NumberFormatInfo.CurrentInfo) to format the UInt32 value for the current culture.
UInt64 Geçerli kültürün UInt64 değerini biçimlendirmek için UInt64.ToString("G", NumberFormatInfo.CurrentInfo) çağırır.Calls UInt64.ToString("G", NumberFormatInfo.CurrentInfo) to format the UInt64 value for the current culture.

ToString yöntemi ve biçim dizeleriThe ToString method and format strings

Bir nesnenin tek bir dize gösterimine sahip olması durumunda, varsayılan ToString yöntemi veya geçersiz kılma ToString güvenmek uygundur.Relying on the default ToString method or overriding ToString is appropriate when an object has a single string representation. Ancak, bir nesnenin değerinde genellikle birden çok temsili vardır.However, the value of an object often has multiple representations. Örneğin, sıcaklık Fahrenhayt, santigrat veya Kelvin derece olarak ifade edilebilir.For example, a temperature can be expressed in degrees Fahrenheit, degrees Celsius, or kelvins. Benzer şekilde, 10 tamsayı değeri 10, 10,0, 1.0 E01 veya $10,00 dahil olmak üzere çeşitli yollarla temsil edilebilir.Similarly, the integer value 10 can be represented in numerous ways, including 10, 10.0, 1.0e01, or $10.00.

Tek bir değerin birden çok dize temsillerine sahip olmasını sağlamak için, .NET biçim dizelerini kullanır.To enable a single value to have multiple string representations, .NET uses format strings. Biçim dizesi, bir veya daha fazla önceden tanımlanmış biçim belirticilerini içeren bir dizedir; tek karakter veya ToString yönteminin çıktısını nasıl biçimlendirmelidir tanımlayan karakter grupları.A format string is a string that contains one or more predefined format specifiers, which are single characters or groups of characters that define how the ToString method should format its output. Biçim dizesi daha sonra nesnenin ToString yöntemine bir parametre olarak geçirilir ve bu nesnenin değerinin dize temsilinin nasıl görüntüleneceğini belirler.The format string is then passed as a parameter to the object's ToString method and determines how the string representation of that object's value should appear.

.NET 'teki tüm sayısal türler, tarih ve saat türleri ve numaralandırma türleri önceden tanımlanmış bir biçim belirteçleri kümesini destekler.All numeric types, date and time types, and enumeration types in .NET support a predefined set of format specifiers. Uygulama tanımlı veri türlerinizin birden fazla dize temsilini tanımlamak için biçim dizelerini de kullanabilirsiniz.You can also use format strings to define multiple string representations of your application-defined data types.

Standart biçim dizeleriStandard format strings

Standart bir biçim dizesi, uygulandığı nesnenin dize gösterimini tanımlayan bir alfabetik karakter olan tek bir Biçim belirleyicisi içerir ve bu, içinde kaç basamak gösterileceğini etkileyen isteğe bağlı bir duyarlık belirticisiyle birlikte sonuç dizesi.A standard format string contains a single format specifier, which is an alphabetic character that defines the string representation of the object to which it is applied, along with an optional precision specifier that affects how many digits are displayed in the result string. Duyarlık belirticisi atlanırsa veya desteklenmiyorsa, standart bir biçim belirticisi standart biçim dizesine eşdeğerdir.If the precision specifier is omitted or is not supported, a standard format specifier is equivalent to a standard format string.

.NET, tüm sayısal türler, tüm tarih ve saat türleri ve tüm numaralandırma türleri için standart biçim belirticileri kümesi tanımlar..NET defines a set of standard format specifiers for all numeric types, all date and time types, and all enumeration types. Örneğin, bu kategorilerin her biri bir "G" standart biçim belirticisini destekler ve bu tür bir değerin genel dize gösterimini tanımlar.For example, each of these categories supports a "G" standard format specifier, which defines a general string representation of a value of that type.

Sabit listesi türleri için standart biçim dizeleri, bir değerin dize temsilini doğrudan denetler.Standard format strings for enumeration types directly control the string representation of a value. Bir numaralandırma değerinin ToString metoduna geçirilen biçim dizeleri değerin dize adı ("G" ve "F" biçim belirticileri), temel alınan integral değeri ("D" Biçim Belirleyicisi) veya onaltılı değeri ("X" Biçim Belirleyicisi) kullanılarak görüntülenip görüntülenmeyeceğini belirtir.The format strings passed to an enumeration value’s ToString method determine whether the value is displayed using its string name (the "G" and "F" format specifiers), its underlying integral value (the "D" format specifier), or its hexadecimal value (the "X" format specifier). Aşağıdaki örnek, bir DayOfWeek numaralandırma değerini biçimlendirmek için standart biçim dizelerinin kullanımını gösterir.The following example illustrates the use of standard format strings to format a DayOfWeek enumeration value.

DayOfWeek thisDay = DayOfWeek.Monday;
string[] formatStrings = {"G", "F", "D", "X"};

foreach (string formatString in formatStrings)
   Console.WriteLine(thisDay.ToString(formatString));
// The example displays the following output:
//       Monday
//       Monday
//       1
//       00000001
Dim thisDay As DayOfWeek = DayOfWeek.Monday
Dim formatStrings() As String = {"G", "F", "D", "X"}

For Each formatString As String In formatStrings
   Console.WriteLine(thisDay.ToString(formatString))
Next
' The example displays the following output:
'       Monday
'       Monday
'       1
'       00000001

Numaralandırma biçim dizeleri hakkında daha fazla bilgi için bkz. numaralandırma biçim dizeleri.For information about enumeration format strings, see Enumeration Format Strings.

Sayısal türler için standart biçim dizeleri, genellikle kesin görünümü bir veya daha fazla özellik değeri tarafından denetlenen bir sonuç dizesi tanımlar.Standard format strings for numeric types usually define a result string whose precise appearance is controlled by one or more property values. Örneğin, "C" biçim belirticisi bir sayıyı para birimi değeri olarak biçimlendirir.For example, the "C" format specifier formats a number as a currency value. Tek parametre olarak "C" biçim belirticisiyle ToString yöntemini çağırdığınızda, geçerli kültürün NumberFormatInfo nesnesinden aşağıdaki özellik değerleri sayısal değerin dize gösterimini tanımlamak için kullanılır:When you call the ToString method with the "C" format specifier as the only parameter, the following property values from the current culture’s NumberFormatInfo object are used to define the string representation of the numeric value:

  • Geçerli kültürün para birimi sembolünü belirten CurrencySymbol özelliği.The CurrencySymbol property, which specifies the current culture’s currency symbol.

  • Aşağıdakileri belirleyen bir tamsayı döndüren CurrencyNegativePattern veya CurrencyPositivePattern özelliği:The CurrencyNegativePattern or CurrencyPositivePattern property, which returns an integer that determines the following:

    • Para birimi sembolünün yerleşimi.The placement of the currency symbol.

    • Negatif değerlerin önünde eksi işareti, sondaki eksi işareti veya parantezle gösterilip gösterilmeyeceğini belirtir.Whether negative values are indicated by a leading negative sign, a trailing negative sign, or parentheses.

    • Sayısal değer ve para birimi simgesi arasında bir boşluk görünüp görüntülenmediğini belirtir.Whether a space appears between the numeric value and the currency symbol.

  • Sonuç dizesindeki kesirli basamakların sayısını tanımlayan CurrencyDecimalDigits özelliği.The CurrencyDecimalDigits property, which defines the number of fractional digits in the result string.

  • Sonuç dizesinde ondalık ayırıcı sembolünü tanımlayan CurrencyDecimalSeparator özelliği.The CurrencyDecimalSeparator property, which defines the decimal separator symbol in the result string.

  • Grup ayırıcı sembolünü tanımlayan CurrencyGroupSeparator özelliği.The CurrencyGroupSeparator property, which defines the group separator symbol.

  • Her bir gruptaki basamak sayısını ondalığın solunda tanımlayan CurrencyGroupSizes özelliği.The CurrencyGroupSizes property, which defines the number of digits in each group to the left of the decimal.

  • Parantez negatif değerleri belirtmek için kullanılmazsa, sonuç dizesinde kullanılan negatif işareti belirleyen NegativeSign özelliği.The NegativeSign property, which determines the negative sign used in the result string if parentheses are not used to indicate negative values.

Ayrıca, sayısal biçim dizeleri bir duyarlık belirticisi içerebilir.In addition, numeric format strings may include a precision specifier. Bu belirticinin anlamı, kullanıldığı biçim dizesine bağlıdır, ancak genellikle sonuç dizesinde görünmesi gereken toplam basamak sayısını veya kesirli basamak sayısını belirtir.The meaning of this specifier depends on the format string with which it is used, but it typically indicates either the total number of digits or the number of fractional digits that should appear in the result string. Örneğin, aşağıdaki örnek, dört onaltılık basamağa sahip bir dize değeri oluşturmak için "x4" standart sayısal dizesini ve duyarlık belirticisini kullanır.For example, the following example uses the "X4" standard numeric string and a precision specifier to create a string value that has four hexadecimal digits.

byte[] byteValues = { 12, 163, 255 };
foreach (byte byteValue in byteValues)
   Console.WriteLine(byteValue.ToString("X4"));
// The example displays the following output:
//       000C
//       00A3
//       00FF
Dim byteValues() As Byte = { 12, 163, 255 }
For Each byteValue As Byte In byteValues
   Console.WriteLine(byteValue.ToString("X4"))
Next
' The example displays the following output:
'       000C
'       00A3
'       00FF

Standart sayısal biçimlendirme dizeleri hakkında daha fazla bilgi için bkz. Standart sayısal biçim dizeleri.For more information about standard numeric formatting strings, see Standard Numeric Format Strings.

Tarih ve saat değerleri için standart biçim dizeleri, belirli bir DateTimeFormatInfo özelliği tarafından depolanan özel biçim dizeleri için diğer adlardır.Standard format strings for date and time values are aliases for custom format strings stored by a particular DateTimeFormatInfo property. Örneğin, "D" biçim belirticisi ile tarih ve saat değerinin ToString yöntemini çağırmak, geçerli kültürün DateTimeFormatInfo.LongDatePattern özelliğinde depolanan özel biçim dizesini kullanarak tarih ve saati gösterir.For example, calling the ToString method of a date and time value with the "D" format specifier displays the date and time by using the custom format string stored in the current culture’s DateTimeFormatInfo.LongDatePattern property. (Özel biçim dizeleri hakkında daha fazla bilgi için sonraki bölümebakın.) Aşağıdaki örnekte bu ilişki gösterilmektedir.(For more information about custom format strings, see the next section.) The following example illustrates this relationship.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime date1 = new DateTime(2009, 6, 30);
      Console.WriteLine("D Format Specifier:     {0:D}", date1);
      string longPattern = CultureInfo.CurrentCulture.DateTimeFormat.LongDatePattern;
      Console.WriteLine("'{0}' custom format string:     {1}", 
                        longPattern, date1.ToString(longPattern));
   }
}
// The example displays the following output when run on a system whose
// current culture is en-US:
//    D Format Specifier:     Tuesday, June 30, 2009
//    'dddd, MMMM dd, yyyy' custom format string:     Tuesday, June 30, 2009
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim date1 As Date = #6/30/2009#
      Console.WriteLine("D Format Specifier:     {0:D}", date1)
      Dim longPattern As String = CultureInfo.CurrentCulture.DateTimeFormat.LongDatePattern
      Console.WriteLine("'{0}' custom format string:     {1}", _
                        longPattern, date1.ToString(longPattern))
   End Sub
End Module
' The example displays the following output when run on a system whose
' current culture is en-US:
'    D Format Specifier:     Tuesday, June 30, 2009
'    'dddd, MMMM dd, yyyy' custom format string:     Tuesday, June 30, 2009

Standart Tarih ve saat biçim dizeleri hakkında daha fazla bilgi için bkz. Standart Tarih ve saat biçim dizeleri.For more information about standard date and time format strings, see Standard Date and Time Format Strings.

Ayrıca, nesnenin ToString(String) yöntemi tarafından üretilen uygulama tanımlı bir nesnenin dize temsilini tanımlamak için standart biçim dizelerini de kullanabilirsiniz.You can also use standard format strings to define the string representation of an application-defined object that is produced by the object’s ToString(String) method. Nesnenizin desteklediği belirli standart biçim belirticilerini tanımlayabilir ve bunların büyük/küçük harfe duyarlı olup olmadığını belirleyebilirsiniz.You can define the specific standard format specifiers that your object supports, and you can determine whether they are case-sensitive or case-insensitive. ToString(String) yöntemi uygulamanız aşağıdakileri desteklemelidir:Your implementation of the ToString(String) method should support the following:

  • Nesnenin bir normal veya ortak biçimini temsil eden bir "G" biçim belirticisi.A "G" format specifier that represents a customary or common format of the object. Nesnenizin ToString yönteminin Parametresiz aşırı yüklemesi, ToString(String) aşırı yüklemesini çağırmalıdır ve "G" standart biçim dizesine iletmelidir.The parameterless overload of your object's ToString method should call its ToString(String) overload and pass it the "G" standard format string.

  • Null başvuruya eşit olan bir Biçim belirleyicisi desteği (Visual BasicNothing).Support for a format specifier that is equal to a null reference (Nothing in Visual Basic). Null başvurusuna eşit olan bir biçim belirticisi "G" biçim belirticisine eşdeğer olarak kabul edilmelidir.A format specifier that is equal to a null reference should be considered equivalent to the "G" format specifier.

Örneğin, bir Temperature sınıfı sıcaklığın derece derece cinsinden dahili olarak depolanmasını sağlayabilir ve Temperature nesnenin değerini santigrat, derece Fahrenhayt ve Kelvin cinsinden temsil eden biçim belirticilerini kullanabilir.For example, a Temperature class can internally store the temperature in degrees Celsius and use format specifiers to represent the value of the Temperature object in degrees Celsius, degrees Fahrenheit, and kelvins. Aşağıdaki örnek, bir gösterim sağlar.The following example provides an illustration.

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 this.ToString("C");
   }
   
   public string ToString(string format)
   {  
      // Handle null or empty string.
      if (String.IsNullOrEmpty(format)) format = "C";
      // Remove spaces and convert to uppercase.
      format = format.Trim().ToUpperInvariant();      
      
      // Convert temperature to Fahrenheit and return string.
      switch (format)
      {
         // Convert temperature to Fahrenheit and return string.
         case "F":
            return this.Fahrenheit.ToString("N2") + " °F";
         // Convert temperature to Kelvin and return string.
         case "K":
            return this.Kelvin.ToString("N2") + " K";
         // return temperature in Celsius.
         case "G":
         case "C":
            return this.Celsius.ToString("N2") + " °C";
         default:
            throw new FormatException(String.Format("The '{0}' format string is not supported.", format));
      }      
   }
}

public class Example
{
   public static void Main()
   {
      Temperature temp1 = new Temperature(0m);
      Console.WriteLine(temp1.ToString());
      Console.WriteLine(temp1.ToString("G"));
      Console.WriteLine(temp1.ToString("C"));
      Console.WriteLine(temp1.ToString("F"));
      Console.WriteLine(temp1.ToString("K"));

      Temperature temp2 = new Temperature(-40m);
      Console.WriteLine(temp2.ToString());
      Console.WriteLine(temp2.ToString("G"));
      Console.WriteLine(temp2.ToString("C"));
      Console.WriteLine(temp2.ToString("F"));
      Console.WriteLine(temp2.ToString("K"));

      Temperature temp3 = new Temperature(16m);
      Console.WriteLine(temp3.ToString());
      Console.WriteLine(temp3.ToString("G"));
      Console.WriteLine(temp3.ToString("C"));
      Console.WriteLine(temp3.ToString("F"));
      Console.WriteLine(temp3.ToString("K"));
      
      Console.WriteLine(String.Format("The temperature is now {0:F}.", temp3));
   }
}
// The example displays the following output:
//       0.00 °C
//       0.00 °C
//       0.00 °C
//       32.00 °F
//       273.15 K
//       -40.00 °C
//       -40.00 °C
//       -40.00 °C
//       -40.00 °F
//       233.15 K
//       16.00 °C
//       16.00 °C
//       16.00 °C
//       60.80 °F
//       289.15 K
//       The temperature is now 16.00 °C.
Public Class Temperature
   Private m_Temp As Decimal
   
   Public Sub New(temperature As Decimal)
      Me.m_Temp = temperature
   End Sub
   
   Public ReadOnly Property Celsius() As Decimal
      Get
         Return Me.m_Temp
      End Get   
   End Property
   
   Public ReadOnly Property Kelvin() As Decimal
      Get
         Return Me.m_Temp + 273.15d   
      End Get
   End Property
   
   Public ReadOnly Property Fahrenheit() As Decimal
      Get
         Return Math.Round(CDec(Me.m_Temp * 9 / 5 + 32), 2)
      End Get      
   End Property

   Public Overrides Function ToString() As String
      Return Me.ToString("C")
   End Function
   
   Public Overloads Function ToString(format As String) As String  
      ' Handle null or empty string.
      If String.IsNullOrEmpty(format) Then format = "C"
      ' Remove spaces and convert to uppercase.
      format = format.Trim().ToUpperInvariant()      
      
      Select Case format
         Case "F"
           ' Convert temperature to Fahrenheit and return string.
            Return Me.Fahrenheit.ToString("N2") & " °F"
         Case "K"
            ' Convert temperature to Kelvin and return string.
            Return Me.Kelvin.ToString("N2") & " K"
         Case "C", "G"
            ' Return temperature in Celsius.
            Return Me.Celsius.ToString("N2") & " °C"
         Case Else
            Throw New FormatException(String.Format("The '{0}' format string is not supported.", format))
      End Select      
   End Function
End Class

Public Module Example
   Public Sub Main()
      Dim temp1 As New Temperature(0d)
      Console.WriteLine(temp1.ToString())
      Console.WriteLine(temp1.ToString("G"))
      Console.WriteLine(temp1.ToString("C"))
      Console.WriteLine(temp1.ToString("F"))
      Console.WriteLine(temp1.ToString("K"))

      Dim temp2 As New Temperature(-40d)
      Console.WriteLine(temp2.ToString())
      Console.WriteLine(temp2.ToString("G"))
      Console.WriteLine(temp2.ToString("C"))
      Console.WriteLine(temp2.ToString("F"))
      Console.WriteLine(temp2.ToString("K"))

      Dim temp3 As New Temperature(16d)
      Console.WriteLine(temp3.ToString())
      Console.WriteLine(temp3.ToString("G"))
      Console.WriteLine(temp3.ToString("C"))
      Console.WriteLine(temp3.ToString("F"))
      Console.WriteLine(temp3.ToString("K"))
      
      Console.WriteLine(String.Format("The temperature is now {0:F}.", temp3))
   End Sub
End Module
' The example displays the following output:
'       0.00 °C
'       0.00 °C
'       0.00 °C
'       32.00 °F
'       273.15 K
'       -40.00 °C
'       -40.00 °C
'       -40.00 °C
'       -40.00 °F
'       233.15 K
'       16.00 °C
'       16.00 °C
'       16.00 °C
'       60.80 °F
'       289.15 K
'       The temperature is now 16.00 °C.

Özel biçim dizeleriCustom format strings

Standart biçim dizelerine ek olarak, .NET, hem sayısal değerler hem de tarih ve saat değerleri için özel biçim dizelerini tanımlar.In addition to the standard format strings, .NET defines custom format strings for both numeric values and date and time values. Özel biçim dizesi, bir değerin dize gösterimini tanımlayan bir veya daha fazla özel biçim belirticisinden oluşur.A custom format string consists of one or more custom format specifiers that define the string representation of a value. Örneğin, "yyyy/AA/GG SS: DD: ss. ffff t zzz" özel tarih ve saat biçimi dizesi, en-US kültürü için bir tarihi "2008/11/15 07:45:00.0000 P-08:00" biçiminde dize gösterimine dönüştürür.For example, the custom date and time format string "yyyy/mm/dd hh:mm:ss.ffff t zzz" converts a date to its string representation in the form "2008/11/15 07:45:00.0000 P -08:00" for the en-US culture. Benzer şekilde, "0000" özel biçim dizesi 12 tamsayı değerini "0012" olarak dönüştürür.Similarly, the custom format string "0000" converts the integer value 12 to "0012". Özel biçim dizelerinin tüm listesi için bkz. özel tarih ve saat biçimi dizeleri ve özel sayısal biçim dizeleri.For a complete list of custom format strings, see Custom Date and Time Format Strings and Custom Numeric Format Strings.

Bir biçim dizesi tek bir özel biçim belirticisinden oluşuyorsa, Biçim belirleyicisi öncesinde% (%) olmalıdır Standart biçim belirticisiyle karışıklık oluşmasını önlemek için simge.If a format string consists of a single custom format specifier, the format specifier should be preceded by the percent (%) symbol to avoid confusion with a standard format specifier. Aşağıdaki örnek, belirli bir tarihin ayın tek basamaklı veya iki basamaklı bir sayısını göstermek için "d" özel biçim belirticisini kullanır.The following example uses the "M" custom format specifier to display a one-digit or two-digit number of the month of a particular date.

DateTime date1 = new DateTime(2009, 9, 8);
Console.WriteLine(date1.ToString("%M"));       // Displays 9
Dim date1 As Date = #09/08/2009#
Console.WriteLine(date1.ToString("%M"))      ' Displays 9

Tarih ve saat değerleri için birçok standart biçim dizesi, DateTimeFormatInfo nesnesinin özellikleri tarafından tanımlanan özel biçim dizeleri için diğer adlardır.Many standard format strings for date and time values are aliases for custom format strings that are defined by properties of the DateTimeFormatInfo object. Özel biçim dizeleri, sayısal değerler veya tarih ve saat değerleri için uygulama tanımlı biçimlendirme sağlamaya yönelik önemli bir esneklik sunar.Custom format strings also offer considerable flexibility in providing application-defined formatting for numeric values or date and time values. Birden çok özel biçim belirticilerini tek bir özel biçim dizesinde birleştirerek, hem sayısal değerler hem de tarih ve saat değerleri için kendi özel sonuç dizelerinizi tanımlayabilirsiniz.You can define your own custom result strings for both numeric values and date and time values by combining multiple custom format specifiers into a single custom format string. Aşağıdaki örnek, ay adı, gün ve yıldan sonra parantez içinde haftanın gününü gösteren bir özel biçim dizesi tanımlar.The following example defines a custom format string that displays the day of the week in parentheses after the month name, day, and year.

string customFormat = "MMMM dd, yyyy (dddd)";
DateTime date1 = new DateTime(2009, 8, 28);
Console.WriteLine(date1.ToString(customFormat));   
// The example displays the following output if run on a system
// whose language is English:
//       August 28, 2009 (Friday)      
Dim customFormat As String = "MMMM dd, yyyy (dddd)"
Dim date1 As Date = #8/28/2009#
Console.WriteLine(date1.ToString(customFormat))   
' The example displays the following output if run on a system
' whose language is English:
'       August 28, 2009 (Friday)      

Aşağıdaki örnek, alan kodu ile birlikte standart, yedi basamaklı ABD telefon numarası olarak bir Int64 değerini görüntüleyen bir özel biçim dizesi tanımlar.The following example defines a custom format string that displays an Int64 value as a standard, seven-digit U.S. telephone number along with its area code.

using System;

public class Example
{
   public static void Main()
   {
      long number = 8009999999;
      string fmt = "000-000-0000";
      Console.WriteLine(number.ToString(fmt));
   }
}
// The example displays the following output:
//        800-999-9999
Module Example
   Public Sub Main()
      Dim number As Long = 8009999999
      Dim fmt As String = "000-000-0000"
      Console.WriteLine(number.ToString(fmt))
   End Sub
End Module
' The example displays the following output:

' The example displays the following output:
'       800-999-9999

Standart biçim dizeleri, uygulama tanımlı türlerinizin çoğu biçimlendirme ihtiyaçlarını genellikle işleyebilir, ancak türlerinizi biçimlendirmek için özel biçim belirticileri de tanımlayabilirsiniz.Although standard format strings can generally handle most of the formatting needs for your application-defined types, you may also define custom format specifiers to format your types.

Biçimlendirme dizeleri ve .NET türleriFormat strings and .NET types

Tüm sayısal türler (yani, Byte, Decimal, Double, Int16, Int32, Int64, SByte, Single, UInt16, UInt32, UInt64ve BigInteger türleri), Ayrıca, DateTime, DateTimeOffset, TimeSpan, Guidve tüm numaralandırma türleri, biçim dizeleriyle biçimlendirmeyi destekler.All numeric types (that is, the Byte, Decimal, Double, Int16, Int32, Int64, SByte, Single, UInt16, UInt32, UInt64, and BigInteger types), as well as the DateTime, DateTimeOffset, TimeSpan, Guid, and all enumeration types, support formatting with format strings. Her tür tarafından desteklenen belirli biçim dizeleri hakkında daha fazla bilgi için aşağıdaki konulara bakın:For information on the specific format strings supported by each type, see the following topics:

BaşlıkTitle TanımDefinition
Standart Sayısal Biçim DizeleriStandard Numeric Format Strings Sayısal değerlerin yaygın olarak kullanılan dize temsillerini oluşturan standart biçim dizelerini açıklar.Describes standard format strings that create commonly used string representations of numeric values.
Özel Sayısal Biçim DizeleriCustom Numeric Format Strings Sayısal değerler için uygulamaya özel biçimler oluşturan özel biçim dizelerini açıklar.Describes custom format strings that create application-specific formats for numeric values.
Standart Tarih ve Saat Biçim DizeleriStandard Date and Time Format Strings DateTime ve DateTimeOffset değerlerinin yaygın olarak kullanılan dize temsillerini oluşturan standart biçim dizelerini açıklar.Describes standard format strings that create commonly used string representations of DateTime and DateTimeOffset values.
Özel Tarih ve Saat Biçim DizeleriCustom Date and Time Format Strings DateTime ve DateTimeOffset değerleri için uygulamaya özel biçimler oluşturan özel biçim dizelerini açıklar.Describes custom format strings that create application-specific formats for DateTime and DateTimeOffset values.
Standart TimeSpan Biçim DizeleriStandard TimeSpan Format Strings Zaman aralıklarının yaygın olarak kullanılan dize temsillerini oluşturan standart biçim dizelerini açıklar.Describes standard format strings that create commonly used string representations of time intervals.
Özel TimeSpan Biçim DizeleriCustom TimeSpan Format Strings Zaman aralıkları için uygulamaya özel biçimler oluşturan özel biçim dizelerini açıklar.Describes custom format strings that create application-specific formats for time intervals.
Sabit Listesi Biçim DizeleriEnumeration Format Strings Numaralandırma değerlerinin dize gösterimlerini oluşturmak için kullanılan standart biçim dizelerini açıklar.Describes standard format strings that are used to create string representations of enumeration values.
Guid.ToString(String) Guid değerleri için standart biçim dizelerini açıklar.Describes standard format strings for Guid values.

Biçim sağlayıcılarıyla kültüre duyarlı biçimlendirmeCulture-sensitive formatting with format providers

Biçim belirticileri nesnelerin biçimlendirmesini özelleştirmenizi sağlar, ancak nesnelerin anlamlı bir dize gösterimini üretmek genellikle ek biçimlendirme bilgileri gerektirir.Although format specifiers let you customize the formatting of objects, producing a meaningful string representation of objects often requires additional formatting information. Örneğin, "C" standart biçim dizesi veya "$ #, #. 00" gibi özel bir biçim dizesi kullanarak bir sayıyı para birimi değeri olarak biçimlendirmek, en azından, doğru para birimi sembolü, Grup ayırıcısı ve ondalık ayırıcısının biçimlendirilmiş dizeye dahil olması için kullanılabilecek bilgiler gerektirir.For example, formatting a number as a currency value by using either the "C" standard format string or a custom format string such as "$ #,#.00" requires, at a minimum, information about the correct currency symbol, group separator, and decimal separator to be available to include in the formatted string. .NET sürümünde bu ek biçimlendirme bilgileri, sayısal türlerin ve Tarih ve saat türlerinin ToString yönteminin bir veya daha fazla aşırı yüküne bir parametre olarak sağlanan IFormatProvider arabirimi aracılığıyla kullanılabilir hale getirilir.In .NET, this additional formatting information is made available through the IFormatProvider interface, which is provided as a parameter to one or more overloads of the ToString method of numeric types and date and time types. IFormatProvider uygulamalar, .NET 'te kültüre özgü biçimlendirmeyi desteklemek için kullanılır.IFormatProvider implementations are used in .NET to support culture-specific formatting. Aşağıdaki örnek, farklı kültürleri temsil eden üç IFormatProvider nesne ile biçimlendirildiğinde bir nesnenin dize temsilinin nasıl değiştiği gösterilmektedir.The following example illustrates how the string representation of an object changes when it is formatted with three IFormatProvider objects that represent different cultures.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      decimal value = 1603.42m;
      Console.WriteLine(value.ToString("C3", new CultureInfo("en-US")));
      Console.WriteLine(value.ToString("C3", new CultureInfo("fr-FR")));
      Console.WriteLine(value.ToString("C3", new CultureInfo("de-DE")));
   }
}
// The example displays the following output:
//       $1,603.420
//       1 603,420 €
//       1.603,420 €
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim value As Decimal = 1603.42d
      Console.WriteLine(value.ToString("C3", New CultureInfo("en-US")))
      Console.WriteLine(value.ToString("C3", New CultureInfo("fr-FR")))
      Console.WriteLine(value.ToString("C3", New CultureInfo("de-DE")))
   End Sub
End Module
' The example displays the following output:
'       $1,603.420
'       1 603,420 €
'       1.603,420 €

IFormatProvider arabirimi, biçimlendirme bilgileri sağlayan nesne türünü belirten tek bir parametreye sahip GetFormat(Type)bir yöntemi içerir.The IFormatProvider interface includes one method, GetFormat(Type), which has a single parameter that specifies the type of object that provides formatting information. Yöntemi bu türden bir nesne sağlayabiliyorsanız, döndürür.If the method can provide an object of that type, it returns it. Aksi halde, null bir başvuru döndürür (Visual BasicNothing).Otherwise, it returns a null reference (Nothing in Visual Basic).

IFormatProvider.GetFormat bir geri çağırma yöntemidir.IFormatProvider.GetFormat is a callback method. Bir IFormatProvider parametresi içeren ToString yöntemi aşırı yüklemesini çağırdığınızda, bu IFormatProvider nesnesinin GetFormat yöntemini çağırır.When you call a ToString method overload that includes an IFormatProvider parameter, it calls the GetFormat method of that IFormatProvider object. GetFormat yöntemi, formatType parametresi tarafından belirtilen gerekli biçimlendirme bilgilerini ToString yöntemine döndürmekten sorumludur.The GetFormat method is responsible for returning an object that provides the necessary formatting information, as specified by its formatType parameter, to the ToString method.

Bir dizi biçimlendirme veya dize dönüştürme yöntemi, IFormatProvidertüründe bir parametre içerir, ancak çoğu durumda, yöntemi çağrıldığında parametresinin değeri yok sayılır.A number of formatting or string conversion methods include a parameter of type IFormatProvider, but in many cases the value of the parameter is ignored when the method is called. Aşağıdaki tabloda, parametresini kullanan bazı biçimlendirme yöntemleri ve IFormatProvider.GetFormat yöntemine geçirdiğiniz Type nesnesinin türü listelenmektedir.The following table lists some of the formatting methods that use the parameter and the type of the Type object that they pass to the IFormatProvider.GetFormat method.

YöntemMethod formatType parametresinin türüType of formatType parameter
sayısal türlerde ToString yöntemiToString method of numeric types System.Globalization.NumberFormatInfo
Tarih ve saat türlerinin ToString yöntemiToString method of date and time types System.Globalization.DateTimeFormatInfo
String.Format System.ICustomFormatter
StringBuilder.AppendFormat System.ICustomFormatter

Not

Sayısal türlerin ve Tarih ve saat türlerinin ToString yöntemleri aşırı yüklenmiştir ve yalnızca bazı aşırı yüklemelerin bir IFormatProvider parametresi vardır.The ToString methods of the numeric types and date and time types are overloaded, and only some of the overloads include an IFormatProvider parameter. Bir yöntemde IFormatProvidertüründe bir parametre yoksa, bunun yerine CultureInfo.CurrentCulture özelliği tarafından döndürülen nesne geçirilir.If a method does not have a parameter of type IFormatProvider, the object that is returned by the CultureInfo.CurrentCulture property is passed instead. Örneğin, varsayılan Int32.ToString() metoduna yapılan bir çağrı sonuç olarak aşağıdaki gibi bir yöntem çağrısıyla sonuçlanır: Int32.ToString("G", System.Globalization.CultureInfo.CurrentCulture).For example, a call to the default Int32.ToString() method ultimately results in a method call such as the following: Int32.ToString("G", System.Globalization.CultureInfo.CurrentCulture).

.NET IFormatProvideruygulayan üç sınıf sağlar:.NET provides three classes that implement IFormatProvider:

Bu sınıfların herhangi birini değiştirmek için kendi biçim sağlayıcınızı de uygulayabilirsiniz.You can also implement your own format provider to replace any one of these classes. Ancak, uygulamanızın GetFormat yöntemi, ToString yöntemine biçimlendirme bilgileri sağlaması gerekiyorsa, önceki tabloda listelenen türde bir nesne döndürmelidir.However, your implementation’s GetFormat method must return an object of the type listed in the previous table if it has to provide formatting information to the ToString method.

Sayısal değerlerin kültüre duyarlı biçimlendirmesiCulture-sensitive formatting of numeric values

Varsayılan olarak, sayısal değer biçimlendirmesi kültüre duyarlıdır.By default, the formatting of numeric values is culture-sensitive. Bir biçimlendirme yöntemini çağırdığınızda bir kültür belirtmezseniz, geçerli iş parçacığı kültürünün biçimlendirme kuralları kullanılır.If you do not specify a culture when you call a formatting method, the formatting conventions of the current thread culture are used. Bu, geçerli iş parçacığı kültürünü dört kez değiştiren ve sonra Decimal.ToString(String) yöntemi çağıran aşağıdaki örnekte gösterilmiştir.This is illustrated in the following example, which changes the current thread culture four times and then calls the Decimal.ToString(String) method. Her durumda, sonuç dizesi geçerli kültürün biçimlendirme kurallarını yansıtır.In each case, the result string reflects the formatting conventions of the current culture. Bunun nedeni ToString ve ToString(String) yöntemlerinin her bir sayısal türün ToString(String, IFormatProvider) yöntemine çağrıları sarması olur.This is because the ToString and ToString(String) methods wrap calls to each numeric type's ToString(String, IFormatProvider) method.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      string[] cultureNames = { "en-US", "fr-FR", "es-MX", "de-DE" };
      Decimal value = 1043.17m;
      
      foreach (var cultureName in cultureNames) {
         // Change the current thread culture.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName);
         Console.WriteLine("The current culture is {0}", 
                           Thread.CurrentThread.CurrentCulture.Name);
         Console.WriteLine(value.ToString("C2"));
         Console.WriteLine();
      }   
   }
}
// The example displays the following output:
//       The current culture is en-US
//       $1,043.17
//       
//       The current culture is fr-FR
//       1 043,17 €
//       
//       The current culture is es-MX
//       $1,043.17
//       
//       The current culture is de-DE
//       1.043,17 €
Imports System.Globalization
Imports System.Threading 

Module Example
   Public Sub Main()
      Dim cultureNames() As String = { "en-US", "fr-FR", "es-MX", "de-DE" }
      Dim value As Decimal = 1043.17d 
      
      For Each cultureName In cultureNames
         ' Change the current thread culture.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName)
         Console.WriteLine("The current culture is {0}", 
                           Thread.CurrentThread.CurrentCulture.Name)
         Console.WriteLine(value.ToString("C2"))
         Console.WriteLine()
      Next                  
   End Sub
End Module
' The example displays the following output:
'       The current culture is en-US
'       $1,043.17
'       
'       The current culture is fr-FR
'       1 043,17 €
'       
'       The current culture is es-MX
'       $1,043.17
'       
'       The current culture is de-DE
'       1.043,17 €

Ayrıca, bir provider parametresine sahip ToString aşırı yüklemesini çağırarak ve bunu aşağıdakilerden birini geçirerek, belirli bir kültür için sayısal bir değer biçimlendirebilirsiniz:You can also format a numeric value for a specific culture by calling a ToString overload that has a provider parameter and passing it either of the following:

Aşağıdaki örnek, bir kayan noktalı sayıyı biçimlendirmek için Ingilizce (Birleşik Devletler) ve Ingilizce (Büyük Britanya) kültürlerini ve Fransızca ve Rusça bağımsız kültürlerini temsil eden NumberFormatInfo nesnelerini kullanır.The following example uses NumberFormatInfo objects that represent the English (United States) and English (Great Britain) cultures and the French and Russian neutral cultures to format a floating-point number.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {                                                                                                    
      Double value = 1043.62957;
      string[] cultureNames = { "en-US", "en-GB", "ru", "fr" };
      
      foreach (var name in cultureNames) {
         NumberFormatInfo nfi = CultureInfo.CreateSpecificCulture(name).NumberFormat;
         Console.WriteLine("{0,-6} {1}", name + ":", value.ToString("N3", nfi));
      }   
   }
}
// The example displays the following output:
//       en-US: 1,043.630
//       en-GB: 1,043.630
//       ru:    1 043,630
//       fr:    1 043,630
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim value As Double = 1043.62957
      Dim cultureNames() As String = { "en-US", "en-GB", "ru", "fr" }
      
      For Each name In cultureNames
         Dim nfi As NumberFormatInfo = CultureInfo.CreateSpecificCulture(name).NumberFormat
         Console.WriteLine("{0,-6} {1}", name + ":", value.ToString("N3", nfi))
      Next   
   End Sub
End Module
' The example displays the following output:
'       en-US: 1,043.630
'       en-GB: 1,043.630
'       ru:    1 043,630
'       fr:    1 043,630

Tarih ve saat değerlerini kültüre duyarlı olarak biçimlendirmeCulture-sensitive formatting of date and time values

Varsayılan olarak, tarih ve saat değerlerinin biçimlendirmesi kültüre duyarlıdır.By default, the formatting of date and time values is culture-sensitive. Bir biçimlendirme yöntemini çağırdığınızda bir kültür belirtmezseniz, geçerli iş parçacığı kültürünün biçimlendirme kuralları kullanılır.If you do not specify a culture when you call a formatting method, the formatting conventions of the current thread culture are used. Bu, geçerli iş parçacığı kültürünü dört kez değiştiren ve sonra DateTime.ToString(String) yöntemi çağıran aşağıdaki örnekte gösterilmiştir.This is illustrated in the following example, which changes the current thread culture four times and then calls the DateTime.ToString(String) method. Her durumda, sonuç dizesi geçerli kültürün biçimlendirme kurallarını yansıtır.In each case, the result string reflects the formatting conventions of the current culture. Bunun nedeni, DateTime.ToString(), DateTime.ToString(String), DateTimeOffset.ToString()ve DateTimeOffset.ToString(String) yöntemlerinin, DateTime.ToString(String, IFormatProvider) ve DateTimeOffset.ToString(String, IFormatProvider) yöntemlerine çağrıları sarması olur.This is because the DateTime.ToString(), DateTime.ToString(String), DateTimeOffset.ToString(), and DateTimeOffset.ToString(String) methods wrap calls to the DateTime.ToString(String, IFormatProvider) and DateTimeOffset.ToString(String, IFormatProvider) methods.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      string[] cultureNames = { "en-US", "fr-FR", "es-MX", "de-DE" };
      DateTime dateToFormat = new DateTime(2012, 5, 28, 11, 30, 0);
      
      foreach (var cultureName in cultureNames) {
         // Change the current thread culture.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName);
         Console.WriteLine("The current culture is {0}", 
                           Thread.CurrentThread.CurrentCulture.Name);
         Console.WriteLine(dateToFormat.ToString("F"));
         Console.WriteLine();
      }   
   }
}
// The example displays the following output:
//       The current culture is en-US
//       Monday, May 28, 2012 11:30:00 AM
//       
//       The current culture is fr-FR
//       lundi 28 mai 2012 11:30:00
//       
//       The current culture is es-MX
//       lunes, 28 de mayo de 2012 11:30:00 a.m.
//       
//       The current culture is de-DE
//       Montag, 28. Mai 2012 11:30:00
Imports System.Globalization
Imports System.Threading 

Module Example
   Public Sub Main()
      Dim cultureNames() As String = { "en-US", "fr-FR", "es-MX", "de-DE" }
      Dim dateToFormat As Date = #5/28/2012 11:30AM#
      
      For Each cultureName In cultureNames
         ' Change the current thread culture.
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName)
         Console.WriteLine("The current culture is {0}", 
                           Thread.CurrentThread.CurrentCulture.Name)
         Console.WriteLine(dateToFormat.ToString("F"))
         Console.WriteLine()
      Next                  
   End Sub
End Module
' The example displays the following output:
'       The current culture is en-US
'       Monday, May 28, 2012 11:30:00 AM
'       
'       The current culture is fr-FR
'       lundi 28 mai 2012 11:30:00
'       
'       The current culture is es-MX
'       lunes, 28 de mayo de 2012 11:30:00 a.m.
'       
'       The current culture is de-DE
'       Montag, 28. Mai 2012 11:30:00 

Ayrıca, belirli bir kültür için bir tarih ve saat değerini, provider parametresine sahip bir DateTime.ToString veya DateTimeOffset.ToString aşırı yüklemeyi çağırarak ve aşağıdakilerden birini geçirerek biçimlendirebilirsiniz:You can also format a date and time value for a specific culture by calling a DateTime.ToString or DateTimeOffset.ToString overload that has a provider parameter and passing it either of the following:

Aşağıdaki örnek, bir tarihi biçimlendirmek için Ingilizce (Birleşik Devletler) ve Ingilizce (Büyük Britanya) kültürlerini ve Fransızca ve Rusça bağımsız kültürlerini temsil eden DateTimeFormatInfo nesnelerini kullanır.The following example uses DateTimeFormatInfo objects that represent the English (United States) and English (Great Britain) cultures and the French and Russian neutral cultures to format a date.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {                                                                                                    
      DateTime dat1 = new DateTime(2012, 5, 28, 11, 30, 0);
      string[] cultureNames = { "en-US", "en-GB", "ru", "fr" };
      
      foreach (var name in cultureNames) {
         DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture(name).DateTimeFormat;
         Console.WriteLine("{0}: {1}", name, dat1.ToString(dtfi));
      }   
   }
}
// The example displays the following output:
//       en-US: 5/28/2012 11:30:00 AM
//       en-GB: 28/05/2012 11:30:00
//       ru: 28.05.2012 11:30:00
//       fr: 28/05/2012 11:30:00
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dat1 As Date = #5/28/2012 11:30AM#
      Dim cultureNames() As String = { "en-US", "en-GB", "ru", "fr" }
      
      For Each name In cultureNames
         Dim dtfi As DateTimeFormatInfo = CultureInfo.CreateSpecificCulture(name).DateTimeFormat
         Console.WriteLine("{0}: {1}", name, dat1.ToString(dtfi))
      Next   
   End Sub
End Module
' The example displays the following output:
'       en-US: 5/28/2012 11:30:00 AM
'       en-GB: 28/05/2012 11:30:00
'       ru: 28.05.2012 11:30:00
'       fr: 28/05/2012 11:30:00

IFormattable arabirimiThe IFormattable interface

Genellikle, ToString yöntemini bir biçim dizesiyle ve bir IFormatProvider parametresiyle aşırı yükleyen türler IFormattable arabirimini de uygular.Typically, types that overload the ToString method with a format string and an IFormatProvider parameter also implement the IFormattable interface. Bu arabirimin, parametre olarak hem biçim dizesi hem de biçim sağlayıcısını içeren tek bir üyesi IFormattable.ToString(String, IFormatProvider)vardır.This interface has a single member, IFormattable.ToString(String, IFormatProvider), that includes both a format string and a format provider as parameters.

Uygulama tanımlı sınıfınız için IFormattable arabirimini uygulamak iki avantaj sunar:Implementing the IFormattable interface for your application-defined class offers two advantages:

Aşağıdaki örnek, IFormattable arabirimini uygulayan bir Temperature sınıfını tanımlar.The following example defines a Temperature class that implements the IFormattable interface. Sıcaklığın Santide gösterilmesi için "C" veya "G" biçim belirticilerini destekler, sıcaklığın Fahrenolması için "F" biçim belirticisi ve sıcaklığın Kelvin cinsinden gösterilmesi için "K" Biçim belirleyicisi.It supports the "C" or "G" format specifiers to display the temperature in Celsius, the "F" format specifier to display the temperature in Fahrenheit, and the "K" format specifier to display the temperature in Kelvin.

using System;
using System.Globalization;

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((decimal) this.m_Temp * 9 / 5 + 32, 2); }
   }

   public override string ToString()
   {
      return this.ToString("G", null);
   }
   
   public string ToString(string format)
   {
      return this.ToString(format, null);
   }
   
   public string ToString(string format, IFormatProvider provider)  
   {
      // Handle null or empty arguments.
      if (String.IsNullOrEmpty(format))
         format = "G";
      // Remove any white space and covert to uppercase.
      format = format.Trim().ToUpperInvariant();

      if (provider == null)
         provider = NumberFormatInfo.CurrentInfo;
            
      switch (format)
      {
         // Convert temperature to Fahrenheit and return string.
         case "F":
            return this.Fahrenheit.ToString("N2", provider) + "°F";
         // Convert temperature to Kelvin and return string.
         case "K":
            return this.Kelvin.ToString("N2", provider) + "K";
         // Return temperature in Celsius.
         case "C":
         case "G":
            return this.Celsius.ToString("N2", provider) + "°C";
         default:
            throw new FormatException(String.Format("The '{0}' format string is not supported.", format));
      }      
   }
}
Imports System.Globalization

Public Class Temperature : Implements IFormattable
   Private m_Temp As Decimal

   Public Sub New(temperature As Decimal)
      Me.m_Temp = temperature
   End Sub
   
   Public ReadOnly Property Celsius() As Decimal
      Get
         Return Me.m_Temp
      End Get   
   End Property
   
   Public ReadOnly Property Kelvin() As Decimal
      Get
         Return Me.m_Temp + 273.15d   
      End Get
   End Property
   
   Public ReadOnly Property Fahrenheit() As Decimal
      Get
         Return Math.Round(CDec(Me.m_Temp * 9 / 5 + 32), 2)
      End Get      
   End Property

   Public Overrides Function ToString() As String
      Return Me.ToString("G", Nothing)
   End Function
   
   Public Overloads Function ToString(format As String) As String
      Return Me.ToString(format, Nothing)
   End Function
   
   Public Overloads Function ToString(format As String, provider As IFormatProvider) As String _  
      Implements IFormattable.ToString

      ' Handle null or empty arguments.
      If String.IsNullOrEmpty(format) Then format = "G"
      ' Remove any white space and convert to uppercase.
      format = format.Trim().ToUpperInvariant()

      If provider Is Nothing Then provider = NumberFormatInfo.CurrentInfo
            
      Select Case format
         ' Convert temperature to Fahrenheit and return string.
         Case "F"
            Return Me.Fahrenheit.ToString("N2", provider) & "°F"
         ' Convert temperature to Kelvin and return string.
         Case "K"
            Return Me.Kelvin.ToString("N2", provider) & "K"
         ' Return temperature in Celsius.
         Case "C", "G"
            Return Me.Celsius.ToString("N2", provider) & "°C"
         Case Else
            Throw New FormatException(String.Format("The '{0}' format string is not supported.", format))
      End Select      
   End Function
End Class

Aşağıdaki örnek bir Temperature nesnesi oluşturur.The following example instantiates a Temperature object. Daha sonra ToString yöntemini çağırır ve bir Temperature nesnesinin farklı dize gösterimlerini almak için birkaç bileşik biçim dizesi kullanır.It then calls the ToString method and uses several composite format strings to obtain different string representations of a Temperature object. Bu yöntem çağrılarının her biri, sırasıyla Temperature sınıfının IFormattable uygulamasını çağırır.Each of these method calls, in turn, calls the IFormattable implementation of the Temperature class.

public class Example
{
   public static void Main()
   {
      CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
      Temperature temp = new Temperature(22m);
      Console.WriteLine(Convert.ToString(temp, new CultureInfo("ja-JP")));
      Console.WriteLine("Temperature: {0:K}", temp);
      Console.WriteLine("Temperature: {0:F}", temp);
      Console.WriteLine(String.Format(new CultureInfo("fr-FR"), "Temperature: {0:F}", temp));
   }
}
// The example displays the following output:
//       22.00°C
//       Temperature: 295.15K
//       Temperature: 71.60°F
//       Temperature: 71,60°F
Public Module Example
   Public Sub Main()
      Dim temp As New Temperature(22d)
      CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US")
      Console.WriteLine(Convert.ToString(temp1, New CultureInfo("ja-JP")))
      Console.WriteLine("Temperature: {0:K}", temp)
      Console.WriteLine("Temperature: {0:F}", temp)
      Console.WriteLine(String.Format(New CultureInfo("fr-FR"), "Temperature: {0:F}", temp)) 
   End Sub
End Module
' The example displays the following output:
'       22.00°C
'       Temperature: 295.15K
'       Temperature: 71.60°F
'       Temperature: 71,60°F

Bileşik biçimlendirmeComposite formatting

String.Format ve StringBuilder.AppendFormatgibi bazı yöntemler bileşik biçimlendirmeyi destekler.Some methods, such as String.Format and StringBuilder.AppendFormat, support composite formatting. Bileşik biçim dizesi, sıfır, bir veya daha fazla nesnenin dize gösterimini içeren tek bir dize döndüren bir şablon türüdür.A composite format string is a kind of template that returns a single string that incorporates the string representation of zero, one, or more objects. Her nesne, bileşik biçim dizesinde dizinli biçim öğesi tarafından temsil edilir.Each object is represented in the composite format string by an indexed format item. Biçim öğesinin dizini, yöntemin parametre listesinde temsil ettiği nesnenin konumuna karşılık gelir.The index of the format item corresponds to the position of the object that it represents in the method's parameter list. Dizinler sıfır tabanlıdır.Indexes are zero-based. Örneğin, String.Format yönteminin aşağıdaki çağrısında, ilk biçim öğesi {0:D}, thatDatedize temsili ile değiştirilmiştir; ikinci biçim öğesi {1}, item1dize temsili ile değiştirilmiştir; ve üçüncü biçim öğesi {2:C2}, item1.Valuedize temsili ile değiştirilmiştir.For example, in the following call to the String.Format method, the first format item, {0:D}, is replaced by the string representation of thatDate; the second format item, {1}, is replaced by the string representation of item1; and the third format item, {2:C2}, is replaced by the string representation of item1.Value.

result = String.Format("On {0:d}, the inventory of {1} was worth {2:C2}.", 
                       thatDate, item1, item1.Value);
Console.WriteLine(result);                            
// The example displays output like the following if run on a system
// whose current culture is en-US:
//       On 5/1/2009, the inventory of WidgetA was worth $107.44.
result = String.Format("On {0:d}, the inventory of {1} was worth {2:C2}.", _
                       thatDate, item1, item1.Value)
Console.WriteLine(result)                            
' The example displays output like the following if run on a system
' whose current culture is en-US:
'       On 5/1/2009, the inventory of WidgetA was worth $107.44.

Bir biçim öğesini karşılık gelen nesnenin dize gösterimiyle değiştirmeye ek olarak, biçim öğeleri de şunları denetlemenize olanak tanır:In addition to replacing a format item with the string representation of its corresponding object, format items also let you control the following:

  • Nesne IFormattable arabirimini uygularsa ve biçim dizelerini destekliyorsa nesnenin dize olarak temsil edildiği belirli bir yoldur.The specific way in which an object is represented as a string, if the object implements the IFormattable interface and supports format strings. Bunu, biçim öğesinin dizinini : (iki nokta üst üste) ve ardından geçerli bir biçim dizesi ile izleyerek yapabilirsiniz.You do this by following the format item's index with a : (colon) followed by a valid format string. Önceki örnekte, bir tarih değerini "d" (kısa tarih düzeniyle) biçim dizesiyle (örn. {0:d}) ve bir sayısal değeri "C2" biçim dizesiyle (örneğin {2:C2}, iki kesirli ondalık basamaklı bir para birimi değeri olarak temsil edecek şekilde) biçimlendirerek bu bir değer.The previous example did this by formatting a date value with the "d" (short date pattern) format string (e.g., {0:d}) and by formatting a numeric value with the "C2" format string (e.g., {2:C2} to represent the number as a currency value with two fractional decimal digits.

  • Nesnenin dize gösterimini içeren alanın genişliği ve bu alandaki dize gösteriminin hizalaması.The width of the field that contains the object's string representation, and the alignment of the string representation in that field. Bunu, biçim öğesinin dizinini , (virgül) ve alan genişliğini izleyerek yapın.You do this by following the format item's index with a , (comma) followed the field width. Alan genişliği pozitif bir değer ise, dize alana sağa hizalanır ve alan genişliği negatif bir değer ise sola hizalanır.The string is right-aligned in the field if the field width is a positive value, and it is left-aligned if the field width is a negative value. Aşağıdaki örnek, tarih değerlerini 20 karakterlik bir alanda sola hizalar ve ondalık değerleri, 11 karakterlik bir alanda tek bir kesirli basamakla sağa hizalar.The following example left-aligns date values in a 20-character field, and it right-aligns decimal values with one fractional digit in an 11-character field.

    DateTime startDate = new DateTime(2015, 8, 28, 6, 0, 0);
    decimal[] temps = { 73.452m, 68.98m, 72.6m, 69.24563m,
                       74.1m, 72.156m, 72.228m };
    Console.WriteLine("{0,-20} {1,11}\n", "Date", "Temperature");
    for (int ctr = 0; ctr < temps.Length; ctr++)
       Console.WriteLine("{0,-20:g} {1,11:N1}", startDate.AddDays(ctr), temps[ctr]);
    
    // The example displays the following output:
    //       Date                 Temperature
    //
    //       8/28/2015 6:00 AM           73.5
    //       8/29/2015 6:00 AM           69.0
    //       8/30/2015 6:00 AM           72.6
    //       8/31/2015 6:00 AM           69.2
    //       9/1/2015 6:00 AM            74.1
    //       9/2/2015 6:00 AM            72.2
    //       9/3/2015 6:00 AM            72.2
    
    Dim startDate As New Date(2015, 8, 28, 6, 0, 0)
    Dim temps() As Decimal = { 73.452, 68.98, 72.6, 69.24563,
                               74.1, 72.156, 72.228 }
    Console.WriteLine("{0,-20} {1,11}", "Date", "Temperature")
    Console.WriteLine()
    For ctr As Integer = 0 To temps.Length - 1
       Console.WriteLine("{0,-20:g} {1,11:N1}", startDate.AddDays(ctr), temps(ctr))
    Next
    ' The example displays the following output:
    '       Date                 Temperature
    '
    '       8/28/2015 6:00 AM           73.5
    '       8/29/2015 6:00 AM           69.0
    '       8/30/2015 6:00 AM           72.6
    '       8/31/2015 6:00 AM           69.2
    '       9/1/2015 6:00 AM            74.1
    '       9/2/2015 6:00 AM            72.2
    '       9/3/2015 6:00 AM            72.2
    

    Hizalama dizesi bileşeni ve biçim dizesi bileşeni varsa, ilki ikincinin (örneğin, {0,-20:g}) önünde olduğunu unutmayın.Note that, if both the alignment string component and the format string component are present, the former precedes the latter (for example, {0,-20:g}.

Bileşik biçimlendirme hakkında daha fazla bilgi için bkz. Bileşik biçimlendirme.For more information about composite formatting, see Composite Formatting.

ICustomFormatter ile özel biçimlendirmeCustom formatting with ICustomFormatter

İki bileşik biçimlendirme yöntemi, String.Format(IFormatProvider, String, Object[]) ve StringBuilder.AppendFormat(IFormatProvider, String, Object[]), özel biçimlendirmeyi destekleyen bir biçim sağlayıcısı parametresi içerir.Two composite formatting methods, String.Format(IFormatProvider, String, Object[]) and StringBuilder.AppendFormat(IFormatProvider, String, Object[]), include a format provider parameter that supports custom formatting. Bu biçimlendirme yöntemlerinden herhangi biri çağrıldığında, biçim sağlayıcısının GetFormat yöntemine bir ICustomFormatter arabirimini temsil eden bir Type nesnesi geçirir.When either of these formatting methods is called, it passes a Type object that represents an ICustomFormatter interface to the format provider’s GetFormat method. GetFormat yöntemi daha sonra özel biçimlendirme sağlayan ICustomFormatter uygulamasının döndürülmesinden sorumludur.The GetFormat method is then responsible for returning the ICustomFormatter implementation that provides custom formatting.

ICustomFormatter arabirimi bir bileşik biçimlendirme yöntemi tarafından otomatik olarak çağrılan ve bir bileşik biçim dizesindeki her biçim öğesi için bir kez olan Format(String, Object, IFormatProvider)tek bir yönteme sahiptir.The ICustomFormatter interface has a single method, Format(String, Object, IFormatProvider), that is called automatically by a composite formatting method, once for each format item in a composite format string. Format(String, Object, IFormatProvider) yöntemi üç parametreye sahiptir: bir biçim öğesinde formatString bağımsız değişkeni, biçimlendirilecek bir nesne ve biçimlendirme hizmetleri sağlayan bir IFormatProvider nesnesi temsil eden bir biçim dizesi.The Format(String, Object, IFormatProvider) method has three parameters: a format string, which represents the formatString argument in a format item, an object to format, and an IFormatProvider object that provides formatting services. Genellikle, ICustomFormatter uygulayan sınıf de IFormatProvideruygular, bu nedenle bu son parametre özel biçimlendirme sınıfının bir başvurusudur.Typically, the class that implements ICustomFormatter also implements IFormatProvider, so this last parameter is a reference to the custom formatting class itself. Yöntemi, biçimlendirilecek nesnenin özel bir biçimli dize gösterimini döndürür.The method returns a custom formatted string representation of the object to be formatted. Yöntem nesneyi biçimlendiremiyor ise, null bir başvuru döndürmelidir (Visual BasicNothing).If the method cannot format the object, it should return a null reference (Nothing in Visual Basic).

Aşağıdaki örnek, tamsayı değerlerini iki basamaklı bir onaltılık değerler sırası ve ardından bir boşluk olarak görüntüleyen ByteByByteFormatter adlı ICustomFormatter bir uygulama sağlar.The following example provides an ICustomFormatter implementation named ByteByByteFormatter that displays integer values as a sequence of two-digit hexadecimal values followed by a space.

public class ByteByByteFormatter : IFormatProvider, ICustomFormatter
{
   public object GetFormat(Type formatType)
   { 
      if (formatType == typeof(ICustomFormatter))
         return this;
      else
         return null;
   }
   
   public string Format(string format, object arg, 
                          IFormatProvider formatProvider)
   {   
      if (! formatProvider.Equals(this)) return null;
      
      // Handle only hexadecimal format string.
      if (! format.StartsWith("X")) return null;
      
      byte[] bytes;
      string output = null;
      
      // Handle only integral types.
      if (arg is Byte) 
         bytes = BitConverter.GetBytes((Byte) arg);
      else if (arg is Int16)
         bytes = BitConverter.GetBytes((Int16) arg);
      else if (arg is Int32)
         bytes = BitConverter.GetBytes((Int32) arg);
      else if (arg is Int64)   
         bytes = BitConverter.GetBytes((Int64) arg);
      else if (arg is SByte)
         bytes = BitConverter.GetBytes((SByte) arg);
      else if (arg is UInt16)
         bytes = BitConverter.GetBytes((UInt16) arg);
      else if (arg is UInt32)
         bytes = BitConverter.GetBytes((UInt32) arg);
      else if (arg is UInt64)
         bytes = BitConverter.GetBytes((UInt64) arg);
      else
         return null;

      for (int ctr = bytes.Length - 1; ctr >= 0; ctr--)
         output += String.Format("{0:X2} ", bytes[ctr]);   
      
      return output.Trim();
   }
}
Public Class ByteByByteFormatter : Implements IFormatProvider, ICustomFormatter
   Public Function GetFormat(formatType As Type) As Object _
                   Implements IFormatProvider.GetFormat
      If formatType Is GetType(ICustomFormatter) Then
         Return Me
      Else
         Return Nothing
      End If
   End Function
   
   Public Function Format(fmt As String, arg As Object, 
                          formatProvider As IFormatProvider) As String _
                          Implements ICustomFormatter.Format

      If Not formatProvider.Equals(Me) Then Return Nothing

      ' Handle only hexadecimal format string.
      If Not fmt.StartsWith("X") Then 
            Return Nothing
      End If

      ' Handle only integral types.
      If Not typeof arg Is Byte AndAlso
         Not typeof arg Is Int16 AndAlso
         Not typeof arg Is Int32 AndAlso
         Not typeof arg Is Int64 AndAlso
         Not typeof arg Is SByte AndAlso
         Not typeof arg Is UInt16 AndAlso
         Not typeof arg Is UInt32 AndAlso
         Not typeof arg Is UInt64 Then _
            Return Nothing

      Dim bytes() As Byte = BitConverter.GetBytes(arg)
      Dim output As String = Nothing
         
      For ctr As Integer = bytes.Length - 1 To 0 Step -1
         output += String.Format("{0:X2} ", bytes(ctr))   
      Next
      
      Return output.Trim()
   End Function
End Class

Aşağıdaki örnek, tamsayı değerlerini biçimlendirmek için ByteByByteFormatter sınıfını kullanır.The following example uses the ByteByByteFormatter class to format integer values. ICustomFormatter.Format yönteminin ikinci String.Format(IFormatProvider, String, Object[]) Yöntem çağrısında birden çok kez çağrıldığını ve varsayılan NumberFormatInfo sağlayıcının üçüncü yöntem çağrısında kullanıldığını unutmayın.ByteByByteFormatter.FormatNote that the ICustomFormatter.Format method is called more than once in the second String.Format(IFormatProvider, String, Object[]) method call, and that the default NumberFormatInfo provider is used in the third method call because the .ByteByByteFormatter.Format Yöntem, "N0" biçim dizesini tanımıyor ve null bir başvuru (Nothing Visual Basic) döndürüyor.method does not recognize the "N0" format string and returns a null reference (Nothing in Visual Basic).

public class Example
{
   public static void Main()
   {
      long value = 3210662321; 
      byte value1 = 214;
      byte value2 = 19;
      
      Console.WriteLine(String.Format(new ByteByByteFormatter(), "{0:X}", value));
      Console.WriteLine(String.Format(new ByteByByteFormatter(), "{0:X} And {1:X} = {2:X} ({2:000})", 
                                      value1, value2, value1 & value2));                                
      Console.WriteLine(String.Format(new ByteByByteFormatter(), "{0,10:N0}", value));
   }
}
// The example displays the following output:
//       00 00 00 00 BF 5E D1 B1
//       00 D6 And 00 13 = 00 12 (018)
//       3,210,662,321
Public Module Example
   Public Sub Main()
      Dim value As Long = 3210662321 
      Dim value1 As Byte = 214
      Dim value2 As Byte = 19
      
      Console.WriteLine((String.Format(New ByteByByteFormatter(), "{0:X}", value)))
      Console.WriteLine((String.Format(New ByteByByteFormatter(), "{0:X} And {1:X} = {2:X} ({2:000})", 
                                      value1, value2, value1 And value2)))                                
      Console.WriteLine(String.Format(New ByteByByteFormatter(), "{0,10:N0}", value))
   End Sub
End Module
' The example displays the following output:
'       00 00 00 00 BF 5E D1 B1
'       00 D6 And 00 13 = 00 12 (018)
'       3,210,662,321
BaşlıkTitle TanımDefinition
Standart Sayısal Biçim DizeleriStandard Numeric Format Strings Sayısal değerlerin yaygın olarak kullanılan dize temsillerini oluşturan standart biçim dizelerini açıklar.Describes standard format strings that create commonly used string representations of numeric values.
Özel Sayısal Biçim DizeleriCustom Numeric Format Strings Sayısal değerler için uygulamaya özel biçimler oluşturan özel biçim dizelerini açıklar.Describes custom format strings that create application-specific formats for numeric values.
Standart Tarih ve Saat Biçim DizeleriStandard Date and Time Format Strings DateTime değerlerinin yaygın olarak kullanılan dize temsillerini oluşturan standart biçim dizelerini açıklar.Describes standard format strings that create commonly used string representations of DateTime values.
Özel Tarih ve Saat Biçim DizeleriCustom Date and Time Format Strings DateTime değerleri için uygulamaya özel biçimler oluşturan özel biçim dizelerini açıklar.Describes custom format strings that create application-specific formats for DateTime values.
Standart TimeSpan Biçim DizeleriStandard TimeSpan Format Strings Zaman aralıklarının yaygın olarak kullanılan dize temsillerini oluşturan standart biçim dizelerini açıklar.Describes standard format strings that create commonly used string representations of time intervals.
Özel TimeSpan Biçim DizeleriCustom TimeSpan Format Strings Zaman aralıkları için uygulamaya özel biçimler oluşturan özel biçim dizelerini açıklar.Describes custom format strings that create application-specific formats for time intervals.
Sabit Listesi Biçim DizeleriEnumeration Format Strings Numaralandırma değerlerinin dize gösterimlerini oluşturmak için kullanılan standart biçim dizelerini açıklar.Describes standard format strings that are used to create string representations of enumeration values.
Bileşik BiçimlendirmeComposite Formatting Bir veya daha fazla biçimli değerin bir dizeye nasıl ekleneceğini açıklar.Describes how to embed one or more formatted values in a string. Dize daha sonra konsolda görüntülenebilir veya bir akışa yazılabilir.The string can subsequently be displayed on the console or written to a stream.
Biçimlendirme İşlemlerini GerçekleştirmePerforming Formatting Operations Belirli biçimlendirme işlemlerini gerçekleştirmeye yönelik adım adım yönergeler sağlayan konuları listeler.Lists topics that provide step-by-step instructions for performing specific formatting operations.
Dizeleri AyrıştırmaParsing Strings Nesnelerin, bu nesnelerin dize temsilleri tarafından tanımlanan değerlere nasıl başlatılacağını açıklar.Describes how to initialize objects to the values described by string representations of those objects. Ayrıştırma biçimlendirmenin ters işlemidir.Parsing is the inverse operation of formatting.

BaşvuruReference