<TimeSpan_LegacyFormatMode> Element
判斷執行階段是否保留具有 System.TimeSpan 值的格式化作業的舊版行為。
<configuration>
<runtime>
<TimeSpan_LegacyFormatMode>
Syntax
<TimeSpan_LegacyFormatMode
enabled="true|false"/>
屬性和項目
下列章節說明屬性、子元素和父元素。
屬性
屬性 | 描述 |
---|---|
enabled |
必要屬性。 指定執行階段是否針對 System.TimeSpan 值使用舊版格式化行為。 |
啟用屬性
值 | 描述 |
---|---|
false |
執行階段不會還原舊版格式設定行為。 |
true |
執行階段會還原舊版格式設定行為。 |
子元素
無。
父項目
元素 | Description |
---|---|
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 行為。 將此元素的 enabled
屬性設定為 true
時,複合格式方法會產生呼叫 TimeSpan.ToString() 而不是 TimeSpan.ToString(String, IFormatProvider),而且 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 或更新版本上執行範例,輸出會與範例在 3.5 .NET Framework 上執行時所產生的輸出相同。
<?xml version ="1.0"?>
<configuration>
<runtime>
<TimeSpan_LegacyFormatMode enabled="true"/>
</runtime>
</configuration>