Различие между.Owner свойством и ShowDialog (владелец IWin32Window)?

Если вы определите переменную внутри { }. Это означает, что переменная жива только внутри { }. Это называется прицелом.

У вас есть прицел с помощью 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);
    }
  }
9
задан Preets 27 December 2008 в 17:29
поделиться

1 ответ

Смотря на различия этих 2 опций с помощью Отражателя, кажется, что у них есть немного отличающаяся реализация: box.Owner = this просто присвойте обеспеченное значение этого к внутреннему полю владельца. Однако при вызове ShowDialog(IWin32Window), реализация выполняет следующий вызов до присвоения значения:

owner = ((Control) owner).TopLevelControlInternal;

Это могло бы привести к присвоению MDIParent.

(Примечание: я далек от того, чтобы быть экспертом относительно MDI, таким образом, я мог бы быть неправым здесь).

4
ответ дан 5 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

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