2009-01-24 31 views

Trả lời

28

Nói chung, bạn sẽ muốn sử dụng InvariantCulture nếu chuỗi bạn đang tạo được duy trì theo cách độc lập với văn hóa của người dùng hiện tại (ví dụ: trong sổ đăng ký hoặc trong tệp).

Bạn sẽ muốn sử dụng CurrentCulture cho các chuỗi sẽ được trình bày trong giao diện người dùng cho người dùng hiện tại (biểu mẫu, báo cáo).

Lỗi tinh tế có thể phát sinh nếu bạn sử dụng CurrentCulture nơi bạn nên sử dụng InvariantCulture: các lỗi chỉ xuất hiện khi bạn có nhiều người dùng với các nền văn hóa khác nhau truy cập cùng một mục nhập hoặc tệp hoặc người dùng thay đổi văn bản mặc định của mình.

Chỉ định rõ ràng CurrentCulture (mặc định nếu đối số IFormatProvider bị bỏ qua), về cơ bản là tài liệu chứng minh rằng bạn đã xem xét ở trên và chuỗi được tạo nên sử dụng văn hóa của người dùng hiện tại. Đó là lý do tại sao FxCop khuyên bạn nên chỉ định đối số IFormatProvider.

4

Điều này đặc biệt hữu ích nếu bạn quan tâm đến việc bản địa hóa (Toàn cầu hóa) trong ứng dụng của bạn. Đó là, nếu bạn muốn ứng dụng của mình hỗ trợ nhiều ngôn ngữ và định dạng văn hóa cụ thể, thì bạn nên sử dụng nó.

5

Không, bạn không cần phải xác định văn hóa trừ khi chuỗi của bạn chứa các yếu tố văn hóa cụ thể như dấu tách thập phân, tiền tệ, v.v., phải được hiển thị tùy thuộc vào văn hóa.

19

Nếu bạn không chỉ định IFormatProvider (hoặc tương đương vượt qua null), hầu hết các loại đối số cuối cùng sẽ rơi vào để được định dạng theo CultureInfo.CurrentCulture. Trường hợp nó được thú vị là bạn có thể chỉ định một tùy chỉnh IFormatProvider mà có thể nhận được crack đầu tiên tại định dạng các đối số, hoặc ghi đè lên văn hóa định dạng tùy thuộc vào ngữ cảnh khác.

Lưu ý rằng CultureInfo.CurrentCulture ảnh hưởng đến định dạng đối số, không phải lựa chọn tài nguyên; lựa chọn tài nguyên được kiểm soát bởi CultureInfo.CurrentUICulture.

+2

Cách xác định IFormatProvider tùy chỉnh - http://www.csharp-examples.net/custom-iformatprovider/ –

+2

Điều gì xảy ra nếu đối tượng là một chuỗi, có cách nào văn hóa tạo nên sự khác biệt không? (Trái ngược với định dạng một cái gì đó như DateTime) –

Các vấn đề liên quan