2016-01-11 7 views
7

Zastanawiam się, dlaczego ReSharper ostrzega mnie, gdy próbuję przekonwertować znak na ciąg bez podania konkretnej informacji o kulturze.Dlaczego program ReSharper ostrzega przed funkcją Char.ToString(), gdy nie jest wyraźnie określane wyrażenie CultureInfo?

Czy istnieje przypadek, w którym można go inaczej przekonwertować na dwa systemy?

Przykład:

var str = ' '.ToString(); 

następujące ostrzeżenie ReSharper pojawi się domyślnie:

Określ kultury w konwersji ciąg wyraźnie.

+0

Co to jest ostrzeżenie? Utwórz [Minimalny, kompletny i sprawdzalny przykład] (http://stackoverflow.com/help/mcve) na podstawie Twojego problemu. –

+0

Co to jest kod? –

+0

To jest dobre pytanie, które zadaję sobie wiele razy. Ale musisz dodać przykładowy kod i dokładną wiadomość: –

Odpowiedz

10

To dlatego ReSharper widzi, że typ implementuje IConvertible, który ma ToString(IFormatProvider).

System.Char sama nie narazić metodę publiczną z tego podpisu, chociaż documentation wskazuje robi:

Char.ToString overloads

Jeśli spojrzeć na przeciążenia z parametrem IFormatProvider widać następującej informacji:

Realizuje
IConvertible.ToString(IFormatProvider)

i ta uwaga:

dostawca parametr jest ignorowany; nie bierze udziału w tej operacji.

ReSharper tylko zauważy obecność tej metody, a także wezwanie do ToString bez IFormatProvider a tym samym podnosi, w tym przypadku można zignorować go.

+0

Podoba mi się ta odpowiedź, ale nie odpowiada ona bezpośrednio na moje (drugie) pytanie: Czy są jakieś efekty uboczne między różnymi systemami, które ją ignorują. Chciałbym mieć bezpośredni wniosek pod wszystkimi informacjami, które mi dałeś. :) – Jannik

+2

Nie, "możesz spokojnie to zignorować". Pojedyncza postać zostanie przekonwertowana na ciąg znaków z pojedynczym znakiem, nie ma tutaj żadnej konwersji. –

+0

[Źródło odniesienia] (http://referencesource.microsoft.com/#mscorlib/system/char.cs,9f693c2a17b40531) również pokazuje, że jest to prawda. –

-2

Znalazłem http://csharpindepth.com/Articles/General/Strings.aspx

Niektóre osobliwości ołowiu Unicode do dziwactw w ciąg znaków i obsługi. Wiele metod ciągów jest wrażliwych na kulturę - innymi słowy, to, co robią, zależy od kultury bieżącego wątku . Na przykład, czego można się spodziewać "i" .toUpper(), aby powrócić? Większość ludzi powie „ja”, ale w turecki poprawną odpowiedzią jest „ja” (U Unicode + 0130, „Kapitał Latin I z kropką nad”)

+2

Nie o to tutaj chodzi. W tym przypadku nie ma metod "ToUpper" lub "ToLower". –

Powiązane problemy