Problem with refering "null" to Canvas.SetTop()

20/10/2008 - 11:53 von Synergi | Report spam
Hallo an alle,

ich hatte folgendes vor. Ich wollte ein Programm schreiben, in dem ich ein
Control (in diesem Fall einen Button) mit der Canvas.SetTop() Methode
platzieren. Als weiteres wollte ich nun dieses Control wàhrend der Laufzeit
verschieben und wollte hierbei im Event Click auf die Canvas.SetBottm()
methode zugreifen und somit das Control nach unten zu bewegen. Jedoch ergab
sich nun das Problem, dass SetTop mehr gewichtet ist als SetBottom wodurch
meine Angabe der BottomProperty ignoriert wurde. Nun wollte ich dies àndern.

Ich wollte der Methode Canvas.SetTop(UIelement, double) zuvor für ein
Element den Wert "Null" übergeben. Jedoch Bekam ich in C# das Problem, dass
mein VS2008 Compiler schrie, dass er <null> nicht in double konvertieren
könnte. Ich dachte mir nur dass dies nicht seien konnte. Ich nahm den Code
und konvertierte ihn in VB und führte das gleiche mit der Zuweisung "nothing"
aus. Hier wurde es angenommen aber mit 0 ausgefüllt.

SO NUN:

1) Wieso gibt es unterschiede bei C# & VB
2) Wieso kann ich in C# einem Double Wert keine Null zuweiseung machen
3) Wieso kann man in VB eine zuweoisung mit Nothing machen
4) Wieso wird aber in VB nach zuweisung von Nothing 0 ausgegeben.

Hier ein kleines Beispiel:

c#
{
Double X;
X = null;
}

VB
{
Dim X as Double
X = nothing
}

Ausgabe C#
"<null> konnte nicht in double konvertiert"

Ausgabe VB
"0"

Nun bitte ich um eine Lösung.

Danke im Vorhinein für alles

mfg Florian HEIDER
 

Lesen sie die antworten

#1 Herfried K. Wagner [MVP]
20/10/2008 - 12:14 | Warnen spam
"Synergi" schrieb:
ich hatte folgendes vor. Ich wollte ein Programm schreiben, in dem ich ein
Control (in diesem Fall einen Button) mit der Canvas.SetTop() Methode
platzieren. Als weiteres wollte ich nun dieses Control wàhrend der
Laufzeit
verschieben und wollte hierbei im Event Click auf die Canvas.SetBottm()
methode zugreifen und somit das Control nach unten zu bewegen. Jedoch
ergab
sich nun das Problem, dass SetTop mehr gewichtet ist als SetBottom wodurch
meine Angabe der BottomProperty ignoriert wurde. Nun wollte ich dies
àndern.

Ich wollte der Methode Canvas.SetTop(UIelement, double) zuvor für ein
Element den Wert "Null" übergeben. Jedoch Bekam ich in C# das Problem,
dass
mein VS2008 Compiler schrie, dass er <null> nicht in double konvertieren
könnte. Ich dachte mir nur dass dies nicht seien konnte. Ich nahm den Code
und konvertierte ihn in VB und führte das gleiche mit der Zuweisung
"nothing"
aus. Hier wurde es angenommen aber mit 0 ausgefüllt.



Verwende in C# anstelle von 'Nothing' ein 'default(<Typ>)'.

1) Wieso gibt es unterschiede bei C# & VB



Weil es zwei unterschiedliche Programmiersprachen sind.

2) Wieso kann ich in C# einem Double Wert keine Null zuweiseung machen



'null' in C# hat für Werttypen keine Bedeutung.

3) Wieso kann man in VB eine zuweoisung mit Nothing machen



In VB steht 'Nothing' für "Standardwert des Typs".

4) Wieso wird aber in VB nach zuweisung von Nothing 0 ausgegeben.



Weil der Standardwert eines numerischen Werttyps 0 ist.

M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Ähnliche fragen