共用方式為


<TimeSpan_LegacyFormatMode> 元素

確定運行時是否在對 values System.TimeSpan 進行格式化作時保留舊行為。

<configuration>
  <runtime>
    <TimeSpan_LegacyFormatMode>

語法

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

屬性和元素

以下部分介紹屬性、子元素和父元素。

屬性

屬性 說明
enabled Required 屬性。

指定運行時是否對值使用舊格式設置行為 System.TimeSpan

enabled 屬性

價值 說明
false 運行時不會恢復舊的格式設置行為。
true 運行時將恢復舊格式設置行為。

子專案

沒有。

父元素

元素 說明
configuration 公共語言運行時和 .NET Framework 應用程式使用的每個配置檔中的根元素。
runtime 包含有關運行時初始化選項的資訊。

備註

從 .NET Framework 4 開始,該 System.TimeSpan 結構實現 IFormattable 介面並支援使用標準和自定義格式字串進行格式設置作。 如果解析方法遇到不受支援的格式說明符或格式字串,它會引發 FormatException.

在早期版本的 .NET Framework 中,該 TimeSpan 結構未實現 IFormattable ,也不支援格式字串。 但是,許多開發人員錯誤地認為TimeSpan它確實支援一組格式字串,並通過 .String.Format 通常,如果類型實現 IFormattable 並支援格式字串,則對具有不受支援的格式字串的格式設置方法的調用通常會引發 FormatException. 但是,由於 TimeSpan 未實現 IFormattable,因此運行時忽略了格式字串,而是調用了 TimeSpan.ToString() 該方法。 這意味著,儘管格式字串對格式化作沒有影響,但它們的存在不會導致 FormatException.

如果舊代碼傳遞複合格式設置方法和無效格式字串,並且無法重新編譯該代碼,則可以使用該 <TimeSpan_LegacyFormatMode> 元素來還原舊 TimeSpan 行為。 將此元素的屬性設置為 enabledtrue時,複合格式設置方法會導致調用 TimeSpan.ToString() 而不是 TimeSpan.ToString(String, IFormatProvider),並且不會引發 a FormatException

範例

下面的示例實例化一個 TimeSpan 物件,並嘗試使用不受支援的標準格式字元串通過 String.Format(String, Object) 該方法對其進行格式化。

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 或更早版本上運行該示例時,它將顯示以下輸出:

12:30:45

這與在 .NET Framework 4 或更高版本上運行示例時的輸出明顯不同:

Invalid Format

但是,如果將以下配置檔添加到範例的目錄中,然後在 .NET Framework 4 或更高版本上運行該示例,則輸出與該示例在 .NET Framework 3.5 上運行時生成的輸出相同。

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

另請參閱