Ich habe diesen Code Segment in VB NET
übersetzen?Wie kann ich VB.Net die CType(), um C#
Vielen Dank im Voraus.
Ich habe diesen Code Segment in VB NET
übersetzen?Wie kann ich VB.Net die CType(), um C#
Vielen Dank im Voraus.
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);
((Bitmap)pbImageHolder.Image).SetPixel(curPoint.X, curPoint.Y, Color.Purple)
Mit '((Bitmap) pbImageHolder.Image)' Sie versuchen, pbImageHolder zu Bitmap zu werfen, die wahrscheinlich nicht funktioniert. Das folgende Bild wird umgewandelt: '(Bitmap) (pbImageHolder.Image)' –
@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
Eigentlich hast du recht. Danke für die Erklärung. –
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/
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
Wie Dennis sagte, benutze '' 'nicht in solchen Fällen. Dies könnte zu einer nicht informativen "NullReferenceException" führen. –
@Dennis ist ein guter Rat, aber Sie müssen nicht nur deswegen abmelden. Die Antwort ist immer noch nützlich – SysDragon