Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   .NET-Sprachen (https://www.delphipraxis.net/82-net-sprachen/)
-   -   C# [Erledigt] Das mysteriöse null... (https://www.delphipraxis.net/155140-%5Berledigt%5D-das-mysterioese-null.html)

implementation 10. Okt 2010 20:13


[Erledigt] Das mysteriöse null...
 
Irgendetwas geht hier nicht mit rechten Dingen zu sich...
Code:
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);
}
Das soll mal einer verstehen ...
Ist hovered jetzt == null oder != null?
Nein, ich benutze keine Threads.
Und nein, ich gebe nirgendwo von Hand Objekte frei.

Siehe auch: http://www.c-sharp-forum.de/viewtopic.php?t=101986

stahli 10. Okt 2010 20:19

AW: Das mysteriöse null...
 
"!=" bedeutet m.E. "ungleich"
"==" bedeutet m.E. "gleich"
"=" bedeutet "zuweisen"

implementation 10. Okt 2010 20:20

AW: Das mysteriöse null...
 
Danke, weiß ich, ist auch nicht das Problem :wink:

stahli 10. Okt 2010 20:21

AW: Das mysteriöse null...
 
Ja, hab´s auch gerade erkannt...
(Du warst aber schneller :wink:)

Satty67 10. Okt 2010 20:37

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?

jfheins 10. Okt 2010 20:43

AW: Das mysteriöse null...
 
http://msdn.microsoft.com/de-de/library/edakx9da.aspx
Zitat:

// Equality operator also returns false when one
// operand is null.
:mrgreen:

Hmmm ... ich dachte ich hätte es, aber bei meinem Test macht der == Operator eigentlich sehr genau das, was er soll ....

Satty67 10. Okt 2010 21:11

AW: Das mysteriöse null...
 
ich nehme an, Name ist ein property in verkürzter Form
Code:
public string Name { get; set; }
dann sollte es automatisch initialisiert sein?

bei
Code:
private string name;
public string Name
{
  get { return name } usw.
ist name/Name null (wenn nicht im Constructor etc. initialisiert).

Ist halt nur ein Schuss ins Blaue, dass der Fehler nicht der vordergründig vermutete ist.

Luckie 10. Okt 2010 21:24

AW: Das mysteriöse null...
 
Gibt es bei C# keine Funktion wie in Delphi Assigned?

Satty67 10. Okt 2010 21:48

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.

Luckie 10. Okt 2010 22:05

AW: Das mysteriöse null...
 
Und kennt die Klasse eine entsprechende Methode?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Seite 1 von 2  1 2      

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