![]() |
[Erledigt] Das mysteriöse null...
Irgendetwas geht hier nicht mit rechten Dingen zu sich...
Code:
Das soll mal einer verstehen ...
if (hovered != null) // Wird ausgeführt, also sollte hovered != null sein ...
{ MessageBox.Show((hovered == null).ToString()); // Gibt "false" aus MessageBox.Show(hovered.Name); // Gibt eine NullReferenceException, weil hovered == null ist????? MessageBox.Show((hovered == null).ToString()); // Hier übrigens die oben beschriebene Abfrage, // IsSensitive und AsSensitive sind Extension Methods if (hovered.IsSensitive()) hovered.AsSensitive().MouseDown(e.X - hovered.Left, e.Y - hovered.Top); } Ist hovered jetzt == null oder != null? Nein, ich benutze keine Threads. Und nein, ich gebe nirgendwo von Hand Objekte frei. Siehe auch: ![]() |
AW: Das mysteriöse null...
"!=" bedeutet m.E. "ungleich"
"==" bedeutet m.E. "gleich" "=" bedeutet "zuweisen" |
AW: Das mysteriöse null...
Danke, weiß ich, ist auch nicht das Problem :wink:
|
AW: Das mysteriöse null...
Ja, hab´s auch gerade erkannt...
(Du warst aber schneller :wink:) |
AW: Das mysteriöse null...
hovered.Name == null?
hovered != null aber kein gültiger Zeiger? Vermutlich letzteres, weil die ganze Testaktion sicher durch einen unerwarteten Fehler bei Zugriff auf IsSensitive aufgetreten ist. Ausser Name und IsSensitive wurden mit null initialisiert. Letzteres auch mal Testen. €: IsSensitive ist ja eine Methode... Da das ja bei C# nicht vorkommen sollte, wie wurde hovered erzeugt, was ist hovered für eine Objekt-Klasse? |
AW: Das mysteriöse null...
![]() Zitat:
Hmmm ... ich dachte ich hätte es, aber bei meinem Test macht der == Operator eigentlich sehr genau das, was er soll .... |
AW: Das mysteriöse null...
ich nehme an, Name ist ein property in verkürzter Form
Code:
dann sollte es automatisch initialisiert sein?
public string Name { get; set; }
bei
Code:
ist name/Name null (wenn nicht im Constructor etc. initialisiert).
private string name;
public string Name { get { return name } usw. Ist halt nur ein Schuss ins Blaue, dass der Fehler nicht der vordergründig vermutete ist. |
AW: Das mysteriöse null...
Gibt es bei C# keine Funktion wie in Delphi Assigned?
|
AW: Das mysteriöse null...
jain, in C# gibt es ja keine klassischen Funktionen wie in Delphi.
Es gibt für einzelne Objekte aber Methoden, wie z.B. string.IsNullOrEmpty. Ausserdem sollte in C# ja ein Objekt-Zeiger immer gültig oder null sein, also nie null und ungültig. |
AW: Das mysteriöse null...
Und kennt die Klasse eine entsprechende Methode?
|
AW: Das mysteriöse null...
Ich kenne die Klasse nicht, aber eher nein, ist keine Basis-Funtionalität. Da prüfen auf null immer funktionieren sollte, wäre das unnötig. Bei Strings macht es Sinn, da man zwei häufige Abfragen kombinieren kann.
|
AW: Das mysteriöse null...
Kann es sein, dass hovered.Name gleich NULL ist?
macht doch einfach mal ein:
Code:
if (hovered.Name != NULL)
{ MessageBox.Show(hovered.Name); }; |
AW: Das mysteriöse null...
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:
Aber nach dem Zugriff auf Name ist hovered null. :gruebel: [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. |
AW: Das mysteriöse null...
Ich glaube, die wenigsten haben Lust sich ihre Informationen aus zich Foren zusammenzusuchen, um dir helfen zu können.
|
AW: Das mysteriöse null...
Deshalb habe ich's hier ja jetzt auch noch einmal geschrieben.
|
AW: Das mysteriöse null...
Zitat:
|
AW: [Erledigt] Das mysteriöse null...
Problem gelöst!
Die MessageBoxen haben zu einem MouseLeave geführt, der wiederum auslöste, dass hovered auf null gesetzt wurde :wall: Danke, dass ihr euch mit meinem Problem auseinandergesetzt habt! :cheers: |
AW: [Erledigt] Das mysteriöse null...
Ich hatte da auch so eine Vermutung, aber c ist nicht meine Baustelle.
Aber immer wieder schön, wenn das Bauchgefühl stimmt |
AW: [Erledigt] Das mysteriöse null...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz