Wyjaśnienie dlaczego rzutując obiekt klasy podstawowej na rozszerzoną dostaję null

0

Mam problem z dziedziczeniem, nie rozumiem dlaczego rzutując obiekt klasy podstawowej na rozszerzoną dostaję null.
Mam klasę :

  public class ProcessEx : System.Diagnostics.Process
    {
        public ProcessEx()
        {
        }
        private bool _checked;
        public bool Checked 
        {
            get { return _checked; }
            set { _checked = value; }
        }
    }

A nastepnie gdzieś w programie...

 
(p as ProcessEx) // calosc daje mi null...
 
1

Mądry człowiek - jest rozszerzeniem człowiek.
Więc jak kogoś kto nie jest mądrym człowiekiem posadzisz na stanowisko wymagającego mądrego człowieka to dostaniesz null.

0

Daje null, bo p nie jest obiektem klasy ProcessEx. Skąd masz to p?

0

Mam coś takiego

 Process[] temp = Process.GetProcesses();

i chciałbym tą tablicę zamienić na tablicę tych "moich procesów"
...
Czy jedyny sposób to stworzenie prywatnej zmiennej w mojej klasie?

 
1

Najprościej będzie, jeśli Twoja klasa będzie zawierała obiekt klasy Process oraz konstruktor ustawiający to pole. Wtedy będziesz mógł napisać:

var pex = new ProcessEx(p);
if (pex.Checked)
{
    //
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1