Запятая может служить не только разделителем в списке аргументов методов, но и оператором в конструкции
for.
В
инициализации
и
приращении
оператора
for
оператор "запятая" может быть применен для разделения нескольких последовательно обрабатываемых операторов. Я взял за основу предыдущий пример и заменил в нем вложенный цикл одним циклом
for
с оператором "запятая":
class CommaOpApp {
const int StartChar = 33;
const int EndChar = 125;
const int CharactersPerLine = 3;
static public void Main() {
for (int i = StartChar, J = 1; i <= EndChar; i++, j++) {
Console.Write("{0}={1} ", i, (char)i); if (0 == (J X CharactersPerLine)) {
// Переход на новую строку, если J кратно 3. Console.WriteLine(""); } } } }
Использование запятой в операторе for — мощная возможность, но код получается трудным для чтения и сопровождения. Такой формально корректный код, хоть в нем и определены литеральные константы, понятным не назовешь:
using System;
class CommaOp2App {
const int StartChar = 33;
const int EndChar = 125;
const int CharsPerLine = 3;
const int NewLine = 13;
const int Space = 32;
static public void MainQ
{
for (int i = StartChar, extra = Space; i <= EndChar;
H-+, extra = ((0 == (i - (StartChar-1))
%
CharsPerLine) ? NewLine : Space))
{
Console.Write("{0}={1> {2}", 1, (char)i, (char)extra);
> } }