共用方式為


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

型別名稱

SetLocaleForDataTypes

CheckId

CA1306

分類

Microsoft.Globalization

中斷變更

中斷

原因

方法或建構函式 (Constructor) 建立了一或多個 DataTableDataSet 執行個體,而且並未明確設定地區設定 (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;
        }
    }
}

請參閱

參考

DataTable

DataSet

CultureInfo

CultureInfo.CurrentUICulture

CultureInfo.InvariantCulture