Есть цикл:
int i = 0;
for(;;){
i++;
}
Как я понял, он бесконечный. Но почему тогда я не могу написать вот так:
for(int i = 0; i++){
//do smth
}
Что ; делает в коде?
И как тогда лучше:
for (int i = 0; i < text.Length ;i++){
}
int i = 0;
for (; i < text.Length ;){
i++;
}
Точка с запятой не просто разделяет элементы, она задает их синтаксический смысл, который определяется их позицией. Пользуясь вашим примером, вы не можете записать оператор цикла как
for (int i = 0; i++) ...
потому что он был бы проинтерпретирован как
for (int i = 0; i++; ) ...
(вполне осмысленная запись, хотя в данном случае и приводит к бесконечному цикла), а вы явно имели в виду.
for (int i = 0; ; i++) ...
Вот если бы не разрешалось пропускать элементы между указанными, то тогда пустых точек с запятой и не понадобилось бы. Такое имеет место, например, в классической форме параметров функции по умолчанию - если аргумент пропущен, все следующий за ним аргументы также должны быть пропущены.
";" служит как разделитель между счетчиком и условием. Думаю что разработчикам языка было легче обойти само наличие аргументов чем разделителей
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как можно реализовать корректный поиск по нескольким полям с помощью одного textbox? Код ниже работает некорректноТо есть фильтрация должна...
Использовался подход Database First