2017-02-04 2 views
2

Я совершенно новый на C#. ReSharper предупредил меня, что использование «string.IndexOf» зависит от культуры. Что конкретно относится к культуре?C# - Что такое культура?

+1

Читайте также: https://msdn.microsoft.com/en-us/library/dd465121(v=vs.110).aspx –

ответ

2

Культура имеет в виду язык, например, американский английский (ан-нас) и британский английский (ан-гб) (Очевидно тот же язык, но с разными культурами, насколько .NET обеспокоен). Причина, по которой это может иметь значение при использовании «string.IndexOf», заключается в том, что некоторые символы (думаю, персонажи с акцентами и умлаутами) обрабатываются по-разному в разных культурах. Недостаточно значений unicode для представления каждого символа на каждом языке, поэтому в определенных настройках культуры определенные комбинации символов (например, «a», за которым следует умлаут) объединяются в один символ, но в других настройках культуры они могут и не быть. Поэтому использование string.IndexOf в строке с умлаутом может давать разные результаты в зависимости от установленной культуры. Но в большинстве случаев, особенно если вы просто учитесь, поведение по умолчанию в классе строк будет просто прекрасным.

1

Resharaper является расширением следовать некоторому стандарту кодирования, если какой-либо метод принятие культуры как overload.then это очень хорошая практика, чтобы обеспечить эти функции в коде

comparisonType 

параметра определяет для поиска параметра значения используя текущую или инвариантную культуру, используя поиск с учетом регистра или без учета регистра, и используя правила сравнения слов или ординалов.

More Info