Поиск

Использование запятой

Запятая может служить не только разделителем в списке аргументов методов, но и оператором в конструкции for. В инициализации и приращении оператора for оператор "запятая" может быть применен для разделения нескольких последовательно обрабатываемых операторов. Я взял за основу предыдущий пример и заменил в нем вложенный цикл одним циклом for с оператором "запятая":

using System;
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);
> } }