hello

Je fais face à un petit problème de cast, et je souhaiterai comprendre un truc:

je possède une classe, hérité de TabPage. Plusieurs objets de ce type sont insérés dans la liste des Controls d'un TabControl, sans problème.

ma question est : pourquoi j'ai le droit de faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
TabPageHerite tabPageHerite = (TabPageHerite)tabControl.Controls[0];
TabPageHerite tabPageHerite = (TabPageHerite)tabControl.Controls[1];
...
et pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
foreach (Control control in tabControlParent.Controls)
{
    TabPageHerite tabPageHerite = (TabPageHerite)control;
    //unable to cast
}
ni même
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
foreach (TabPage tabPage in tabControlParent.Controls)
{
    TabPageHerite tabPageHerite = (TabPageHerite)tabPage;
    //unable to cast
}
Je comprend le problème du cast en lui même, mais je ne vois pas vraiment en quoi les deuxièmes et troisièmes solutions sont différentes...