|
Как будет
|
|||
---|---|---|---|
#18+
C#, sTUDUIO'2019 char c; c = (char)Console.Read(); как заменить более пофессионально нижнюю проверку if (c != 'q' && c != 'Q') Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2019, 18:33 |
|
Как будет
|
|||
---|---|---|---|
#18+
Vova_1805, tolower(), например... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2019, 19:03 |
|
Как будет
|
|||
---|---|---|---|
#18+
ёёёёё , Сасибо до Вашей подсказки я проверил if (Char.ToUpper(c) !='Q') - работает. Мне кажется, что в C++ после введенной точки c. появлялись функции, а в C# - НЕ ТАК. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2019, 19:11 |
|
Как будет
|
|||
---|---|---|---|
#18+
Vova_1805 как заменить более пофессионально нижнюю проверку if (c != 'q' && c != 'Q') Спасибо Это самая быстрая проверка, можешь заменить на покрасивее, но будет тормознее. PS Форум по C# тут Модератор: Тема перенесена из форума "C++". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2019, 20:15 |
|
Как будет
|
|||
---|---|---|---|
#18+
Согласно рекомендациям Микрософт сравнения с использованием ToUpper() происходят быстрее. Внутри сравниваются строки в верхнем регистре и если перед этим строки были приведены в нижний регистр, то внутри сравнения их опять преобразуют в верхний. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2019, 20:44 |
|
Как будет
|
|||
---|---|---|---|
#18+
ёёёёё, такая рекомендация действительно есть https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices-strings Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison. но в чем суть, я так и не понял... ниже есть такое там жеTherefore, the following comparison: String.Compare(strA, strB, StringComparison.OrdinalIgnoreCase); is equivalent to (but faster than) this comparison: String.Compare(strA.ToUpperInvariant(), strB.ToUpperInvariant(), StringComparison.Ordinal); These comparisons are still very fast. и такое там жеThe String.ToUpperInvariant and String.ToLowerInvariant methods are also available. ToUpperInvariant is the standard way to normalize case. Comparisons made using StringComparison.OrdinalIgnoreCase are behaviorally the composition of two calls: calling ToUpperInvariant on both string arguments, and doing a comparison using StringComparison.Ordinal. но рекомендацию использовать ToUpper вместо ToLower ничего из этого вроде как не объясняет... P.S. в исходниках сравнение строк упирается в native API call - InternalCompareString - может там собака зарыта? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2019, 21:59 |
|
Как будет
|
|||
---|---|---|---|
#18+
Задача не имеет смысла, потому что теоретически может быть какая-то локаль в которой c != 'q' && c != 'Q' может означать что угодно. Например, в турецкой локали есть известная шляпа: Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2019, 22:28 |
|
Как будет
|
|||
---|---|---|---|
#18+
fkthat, мокрософты рекомендуют - ToUpperInvariant/ToLowerInvariant ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2019, 00:23 |
|
Как будет
|
|||
---|---|---|---|
#18+
Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2019, 00:28 |
|
Как будет
|
|||
---|---|---|---|
#18+
Shocker.Pro, с турецкой локалью, согласно fkthat, имеем Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2019, 00:53 |
|
Как будет
|
|||
---|---|---|---|
#18+
Можешь поставить инвариантную культуру, всё в твоих руках. Не понимаю, зачем нужно преобразовывать сравниваемые строки, когда есть штатные инструменты для их сравнения нужным способом (а также штатные компараторы (для Linq, к примеру)) А что касается турецкого примера - так ты турецкую раскладку на клаве сначала поставь и сравнивай ввод из консоли. У автора-то именно консоль ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2019, 01:02 |
|
Как будет
|
|||
---|---|---|---|
#18+
решарпер тоже подчеркивает ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2019, 11:28 |
|
Как будет
|
|||
---|---|---|---|
#18+
Не бывает универсального "correctly", я о том и говорю, все зависит от конкретной ситуации. В одной ToUpper будет одним, в другой ToUpper будет другим, ToUpperInvariant всегда будет одним и тем же, но, возможно, по конкретной задаче нужно приведение по какой-то конкретной локали, а не по инвариантной. FxCop и Resharper прямо так и говорят - "хочешь делать что-то локалезависимое - указывай явно локаль". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2019, 13:07 |
|
|
start [/forum/topic.php?fid=20&fpage=15&tid=1398730]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 170ms |
0 / 0 |