<TimeSpan_LegacyFormatMode> 要素<TimeSpan_LegacyFormatMode> Element

値を使用して、ランタイムが書式設定操作で従来の動作を保持するかどうかを決定し System.TimeSpan ます。Determines whether the runtime preserves legacy behavior in formatting operations with System.TimeSpan values.

<configuration>
  <runtime>
    <TimeSpan_LegacyFormatMode>

構文Syntax

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

属性および要素Attributes and Elements

以降のセクションでは、属性、子要素、および親要素について説明します。The following sections describe attributes, child elements, and parent elements.

属性Attributes

属性Attribute 説明Description
enabled 必須の属性です。Required attribute.

ランタイムが従来の書式設定動作を値と共に使用するかどうかを指定し System.TimeSpan ます。Specifies whether the runtime uses legacy formatting behavior with System.TimeSpan values.

enabled 属性enabled Attribute

Value DescriptionDescription
false ランタイムでは、従来の書式設定動作は復元されません。The runtime does not restore legacy formatting behavior.
true ランタイムは、従来の書式設定動作を復元します。The runtime restores legacy formatting behavior.

子要素Child Elements

なし。None.

親要素Parent Elements

要素Element DescriptionDescription
configuration 共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。The root element in every configuration file used by the common language runtime and .NET Framework applications.
runtime ランタイム初期化オプションに関する情報を含んでいます。Contains information about runtime initialization options.

解説Remarks

.NET Framework 4 以降では、 System.TimeSpan 構造体はインターフェイスを実装 IFormattable し、標準およびカスタムの書式指定文字列を使用した書式設定操作をサポートします。Starting with the .NET Framework 4, the System.TimeSpan structure implements the IFormattable interface and supports formatting operations with standard and custom format strings. 解析メソッドで、サポートされていない書式指定子または書式指定文字列が検出されると、がスローさ FormatException れます。If a parsing method encounters an unsupported format specifier or format string, it throws a FormatException.

以前のバージョンの .NET Framework では、構造体がを実装しておらず、 TimeSpan IFormattable 書式指定文字列をサポートしていませんでした。In previous versions of the .NET Framework, the TimeSpan structure did not implement IFormattable and did not support format strings. しかし、多くの開発者は、 TimeSpan 書式指定文字列のセットをサポートし、などのメソッドを使用して複合書式指定操作で使用したことを誤って想定していました String.FormatHowever, many developers mistakenly assumed that TimeSpan did support a set of format strings and used them in composite formatting operations with methods such as String.Format. 通常、型がを実装 IFormattable し、書式指定文字列をサポートする場合、サポートされていない書式指定文字列を使用した書式指定メソッドの呼び出しは、通常、をスロー FormatException します。Ordinarily, if a type implements IFormattable and supports format strings, calls to formatting methods with unsupported format strings usually throw a FormatException. ただし、が TimeSpan 実装されていないため、 IFormattable ランタイムは書式指定文字列を無視し、代わりにメソッドを呼び出しました TimeSpan.ToString()However, because TimeSpan did not implement IFormattable, the runtime ignored the format string and instead called the TimeSpan.ToString() method. これは、書式指定文字列が書式設定操作に影響を与えないことを意味しますが、その存在はになりませんでした FormatExceptionThis means that, although the format strings had no effect on the formatting operation, their presence did not result in a FormatException.

レガシコードによって複合書式指定メソッドと無効な書式指定文字列が渡され、そのコードを再コンパイルできない場合は、要素を使用して <TimeSpan_LegacyFormatMode> 従来の動作を復元でき TimeSpan ます。For cases in which legacy code passes a composite formatting method and an invalid format string, and that code cannot be recompiled, you can use the <TimeSpan_LegacyFormatMode> element to restore the legacy TimeSpan behavior. enabledこの要素の属性をに設定すると、 true 複合書式指定メソッドによってではなくが呼び出され、 TimeSpan.ToString() がスローされ TimeSpan.ToString(String, IFormatProvider) FormatException ません。When you set the enabled attribute of this element to true, the composite formatting method results in a call to TimeSpan.ToString() rather than TimeSpan.ToString(String, IFormatProvider), and a FormatException is not thrown.

Example

次の例では、オブジェクトをインスタンス化 TimeSpan し、 String.Format(String, Object) サポートされていない標準書式指定文字列を使用して、メソッドを使用して書式設定を試みます。The following example instantiates a TimeSpan object and attempts to format it with the String.Format(String, Object) method by using an unsupported standard format string.

using System;

public class Example
{
   public static void Main()
   {
      TimeSpan interval = new TimeSpan(12, 30, 45);
      string output;
      try {
         output = String.Format("{0:r}", interval);
      }
      catch (FormatException) {
         output = "Invalid Format";
      }
      Console.WriteLine(output);
   }
}
Module Example
    Public Sub Main()
        Dim interval As New TimeSpan(12, 30, 45)
        Dim output As String
        Try
            output = String.Format("{0:r}", interval)
        Catch e As FormatException
            output = "Invalid Format"
        End Try
        Console.WriteLine(output)
    End Sub
End Module

.NET Framework 3.5 またはそれ以前のバージョンでこの例を実行すると、次の出力が表示されます。When you run the example on the .NET Framework 3.5 or on an earlier version, it displays the following output:

12:30:45

これは、.NET Framework 4 以降のバージョンで例を実行した場合の出力とは大きく異なります。This differs markedly from the output if you run the example on the .NET Framework 4 or later version:

Invalid Format

ただし、次の構成ファイルを例のディレクトリに追加した後、.NET Framework 4 以降のバージョンでこの例を実行すると、出力は、.NET Framework 3.5 で実行されたときに例で生成されたものと同じになります。However, if you add the following configuration file to the example's directory and then run the example on the .NET Framework 4 or later version, the output is identical to that produced by the example when it is run on .NET Framework 3.5.

<?xml version ="1.0"?>
<configuration>
   <runtime>
      <TimeSpan_LegacyFormatMode enabled="true"/>
   </runtime>
</configuration>

関連項目See also