2012-09-03 6 views

Antwort

19

In VB.Net CType(object, type) wirft ein Objekt auf einen bestimmten Typ.

Es gibt zwei Möglichkeiten, dies in C# zu erreichen:

Bitmap image = pbImageHolder.Image as Bitmap; 
image.SetPixel(curPoint.X, curPoint.Y, Color.Purple); 

oder

Bitmap image = (Bitmap)(pbImageHolder.Image); 
image.SetPixel(curPoint.X, curPoint.Y, Color.Purple); 
+3

1) Die erste Option, die Sie angegeben haben, erfordert dringend eine Null-Überprüfung; "as" ist nicht für Anwendungsfälle ohne Null-Überprüfung des Ergebnisses gedacht und kann nicht als direktes Äquivalent zum VB 'CType'-Operator positioniert werden; 2) Die zweite Option hat unnötige Klammern, siehe Antwort auf Ihren Kommentar unten. Also, nach unten abgestimmt, vor allem für "so" fahrlässige Nutzung. – Dennis

+0

Wie Dennis sagte, benutze '' 'nicht in solchen Fällen. Dies könnte zu einer nicht informativen "NullReferenceException" führen. –

+0

@Dennis ist ein guter Rat, aber Sie müssen nicht nur deswegen abmelden. Die Antwort ist immer noch nützlich – SysDragon

9
((Bitmap)pbImageHolder.Image).SetPixel(curPoint.X, curPoint.Y, Color.Purple) 
+0

Mit '((Bitmap) pbImageHolder.Image)' Sie versuchen, pbImageHolder zu Bitmap zu werfen, die wahrscheinlich nicht funktioniert. Das folgende Bild wird umgewandelt: '(Bitmap) (pbImageHolder.Image)' –

+4

@DennisTraub: Sie irren sich, siehe C# -Sprachspezifikation, Abschnitt 7.3.1 "Vorrang und Assoziativität von Operatoren" (http://go.microsoft. com/fwlink /? LinkId = 199552). Mitgliedszugriffsoperator "." hat Vorrang vor dem Operator cast, also werden Ausdrücke wie '(TypeWichCastTo) variable.Member' folgendermaßen ausgewertet: 1) Zuerst' Member' von 'Variable' aufrufen; 2) dann Cast 'Member' zu' TypeWichCastTo'. – Dennis

+1

Eigentlich hast du recht. Danke für die Erklärung. –

2

Hallo Dies ist der Code nach der Umwandlung VB zu C# -Code:

((Bitmap)pbImageHolder.Image).SetPixel(curPoint.X, curPoint.Y, Color.Purple); 

Und wenn Sie wollen Code-Konvertierung von VB nach C# und umgekehrt durch den folgenden Link gehen: http://www.developerfusion.com/tools/convert/vb-to-csharp/

Verwandte Themen