Ogólnie rzecz biorąc, będziesz chciał użyć InvariantCulture, jeśli ciąg, który generujesz, będzie trwał w sposób niezależny od kultury bieżącego użytkownika (np. W rejestrze lub w pliku).
Będziesz chciał użyć CurrentCulture dla ciągów, które mają być prezentowane w interfejsie dla bieżącego użytkownika (formularze, raporty).
Subtelne błędy mogą powstać, jeśli używasz CurrentCulture, w którym powinieneś używać InvariantCulture: błędy, które pojawiają się tylko wtedy, gdy masz wielu użytkowników z różnymi kulturami uzyskującymi dostęp do tego samego wpisu rejestru lub pliku, lub jeśli użytkownik zmienia swoją domyślną kulturę.
Jawnie określając CurrentCulture (wartość domyślna, jeśli argument IFormatProvider jest pominięty), jest to zasadniczo dokumentacja, która pokazuje, że wzięto pod uwagę powyższe i że generowany ciąg powinien wykorzystywać kulturę bieżącego użytkownika. Dlatego FxCop zaleca, aby podać argument IFormatProvider.
Jak zdefiniować niestandardowy IFormatProvider - http://www.csharp-examples.net/custom-iformatprovider/ –
Co jeśli obiekt jest ciągiem znaków, czy istnieje jakakolwiek inna kultura? (W przeciwieństwie do formatowania czegoś takiego jak DateTime) –