Если вы определите переменную внутри { }
. Это означает, что переменная жива только внутри { }
. Это называется прицелом.
У вас есть прицел с помощью if/while/for/function
...
В следующем примере переменная factorials
жива только внутри одной итерации цикла for
. Это означает, что вы воссоздаете переменную factorials
при каждом цикле.
for(let i = 1; i <= num; i++){
const factorials = [];
if(num % i === 0){
factorials.push(i);
}
}
Если вы хотите, чтобы она работала, вам нужно создать свою переменную вне for, чтобы она не воссоздалась после каждой итерации и сохраняла ее значения.
const factorials = [];
for(let i = 1; i <= num; i++){
if(num % i === 0){
factorials.push(i);
}
}
Смотря на различия этих 2 опций с помощью Отражателя, кажется, что у них есть немного отличающаяся реализация: box.Owner = this
просто присвойте обеспеченное значение этого к внутреннему полю владельца. Однако при вызове ShowDialog(IWin32Window)
, реализация выполняет следующий вызов до присвоения значения:
owner = ((Control) owner).TopLevelControlInternal;
Это могло бы привести к присвоению MDIParent.
(Примечание: я далек от того, чтобы быть экспертом относительно MDI, таким образом, я мог бы быть неправым здесь).