Einzelnen Beitrag anzeigen

Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Das mysteriöse null...

  Alt 10. Okt 2010, 23:47
Lest doch mal den verlinkten Thread im C#-Forum.
Da habe ich bereits genau beschrieben, was Name für eine Property ist.
Die Property Name ist vom Typ string und bietet Lese- und Schreibzugriff auf ein Feld.
Name zeigt an der Stelle auf den String "field" und ist daher auf jeden Fall ungleich Null.

hovered ist ganz normal über den Konstruktor erzeugt.

[edit]
Was noch von Belang sein könnte:
Zitat von Implementation im C#F:
Code:
if (hovered != null)
{
        //MessageBox.Show((hovered == null).ToString());
        MessageBox.Show(hovered.Name); // Gibt "field" aus
        MessageBox.Show((hovered == null).ToString()); // Gibt "true" aus
        if (hovered.IsSensitive())
              hovered.AsSensitive().MouseDown(e.X - hovered.Left, e.Y - hovered.Top);
}
Hier tritt keine Exception auf.
Aber nach dem Zugriff auf Name ist hovered null.

[edit2]
Mal zur Aufklärung über hovered's Member:
- string Name: Property mit Getter und Setter
- bool IsSensitive(): Extension Method, fragt ab, ob das Objekt ein bestimmtes Interface ((I)QuinSensitiveControl) implementiert.
- AsSensitive(): Extension Method, liefert Objekt als obiges Interface zurück.
hovered ist ein nichtstatisches Feld und hat einen Interfacetyp ((I)QuinDynamicControl).
(I)QuinSensitiveControl ist von (I)QuinDynamicControl abgeleitet.
Weil IsSensitive() und AsSensitive() Extension Methods sind, gibt es keinen Fehler, wenn hovered null ist.
IsSensitive() liefert dann false zurück und AsSensitiv() null.

Geändert von implementation (11. Okt 2010 um 00:43 Uhr)
  Mit Zitat antworten Zitat