CA1306:設定資料型別的地區設定

型別名稱

SetLocaleForDataTypes

CheckId

CA1306

分類

Microsoft.Globalization

中斷變更

中斷

原因

方法或建構函式 (Constructor) 建立了一或多個 System.Data.DataTableSystem.Data.DataSet 執行個體,而且並未明確設定地區設定 (Locale) 屬性 (DataTable.LocaleDataSet.Locale)。

規則描述

地區設定會決定資料的文化特性特定展示項目,例如用於數值、貨幣符號和排序次序的格式。 當您建立 DataTableDataSet 時,您應該明確設定地區設定。 根據預設,這些型別的地區設定為目前的文化特性。 對於儲存在資料庫或檔案中而且全域共用的資料而言,地區設定通常必須設定為不因文化特性而異 (CultureInfo.InvariantCulture)。 當資料共用於文化特性之間時,使用預設地區設定會造成 DataTableDataSet 的內容展示或解譯不正確。

如何修正違規

若要修正此規則的違規情形,請明確設定 DataTableDataSet 的地區設定。

隱藏警告的時機

當程式庫或應用程式適用於有限制的地區設定使用者、資料並未共用,或預設值可在所有支援的情節中產生想要的行為時,您就可以放心地隱藏這項規則的警告。

範例

下列範例會建立兩個 DataTable 執行個體。

using System;
using System.Data;
using System.Globalization;

namespace GlobalLibrary
{
    public class MakeDataTables
    {
        // Violates rule: SetLocaleForDataTypes.
        public DataTable MakeBadTable()
        {
            DataTable badTable = new DataTable("Customers");
            DataColumn keyColumn = badTable.Columns.Add("ID", typeof(Int32));
            keyColumn.AllowDBNull = false;
            keyColumn.Unique = true;
            badTable.Columns.Add("LastName", typeof(String));
            badTable.Columns.Add("FirstName", typeof(String));
            return badTable;
        }

        public DataTable MakeGoodTable()
        {
            DataTable goodTable = new DataTable("Customers");
            // Satisfies rule: SetLocaleForDataTypes.
            goodTable.Locale = CultureInfo.InvariantCulture;
            DataColumn keyColumn = goodTable.Columns.Add("ID", typeof(Int32));

            keyColumn.AllowDBNull = false;
            keyColumn.Unique = true;
            goodTable.Columns.Add("LastName", typeof(String));
            goodTable.Columns.Add("FirstName", typeof(String));
            return goodTable;
        }
    }
}

請參閱

參考

System.Data.DataTable

System.Data.DataSet

System.Globalization.CultureInfo

CultureInfo.CurrentUICulture

CultureInfo.InvariantCulture