Несколько инициализация в C# 'для' цикла

John von Neumann однажды сказал, что что-то к эффекту "любого пытающегося генерировать случайные числа через алгоритмические средства, конечно, живет в грехе".

Даже/dev/random не случаен в математике или значение слова физика. Даже измерение затухания радиоизотопа не случайно. (Скорость распада. Измерение не. Счетчики Гейгера имеют маленькое время сброса после каждого обнаруженного события, за это время они неспособны обнаружить новые события. Это приводит к тонкой предвзятости. Существуют способы существенно смягчить это, но не полностью устранить его.)

Остановка, ища истинную случайность. Хороший генератор псевдослучайного числа действительно, что Вы ищете.

50
задан Peter Mortensen 17 April 2017 в 03:10
поделиться

3 ответа

Это невозможно. Поместите одно из объявлений перед циклом:

MyClass i = 0;
for (int j = 1; j < 3; j++, i++)

Или для симметрии, оба из них:

MyClass i = 0;
int j = 1;
for (; j < 3; j++, i++)

Также возможно, что одна из переменных является более первичной, чем другая. В этом случае было бы лучше сделать одну переменную цикла и обрабатывать другую отдельно, например:

MyClass i = 0;
for (int j = 0; j < 3; j++)
{
    ...
    i++;
}

Обратите внимание, что если бы i и j были одинаковыми type, то вы можете объявить их оба в цикле for:

for (int i = 0, j = 1; j < 3; j++, i++)
83
ответ дан 7 November 2019 в 10:32
поделиться

Я не думаю, что вы можете определить более одного типа внутри цикла for. только для (int i = 0, j = 3; j <7; j ++, i ++)

0
ответ дан 7 November 2019 в 10:32
поделиться

Да, это можно сделать. Вы можете инициализировать переменные разных типов внутри оператора for, но вы не можете объявлять переменные разных типов внутри оператора for. Чтобы инициализировать переменные разных типов внутри оператора for, вы должны объявить все типы до цикла for. Например:

int xx;
string yy;
for(xx=0, yy=""; xx<10; xx++)
    {
    ....
    }

[EDIT] Добавляю дополнительную информацию для полноты. Это выходит за рамки того, что просил ОП, но может быть полезно для других. Инициализировать переменные одного типа в цикле for очень просто, достаточно разделить инициализацию запятыми. В третьей секции можно также изменять несколько переменных. Вы не можете иметь несколько секций, разделенных запятыми, во второй секции сравнения, но вы можете использовать && || и ! для создания сложной булевой секции, основанной на нескольких переменных.

for(int i=0, j=0, k=99; i<10 && k<200; i++, j++, k += 2)

Однако, не стоит делать оператор for настолько сложным, что трудно понять, что происходит.

15
ответ дан 7 November 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: