Ho questo segmento di codice in VB NET
:Come traduco di VB.Net CType() per C#
CType(pbImageHolder.Image, Bitmap).SetPixel(curPoint.X, curPoint.Y, Color.Purple)
ciò che è il codice appropriato in C#
?
Grazie in anticipo.
Ho questo segmento di codice in VB NET
:Come traduco di VB.Net CType() per C#
CType(pbImageHolder.Image, Bitmap).SetPixel(curPoint.X, curPoint.Y, Color.Purple)
ciò che è il codice appropriato in C#
?
Grazie in anticipo.
In VB.Net CType(object, type)
esegue il cast di un oggetto su un tipo specifico.
Ci sono due modi per ottenere questo in C#:
Bitmap image = pbImageHolder.Image as Bitmap;
image.SetPixel(curPoint.X, curPoint.Y, Color.Purple);
o
Bitmap image = (Bitmap)(pbImageHolder.Image);
image.SetPixel(curPoint.X, curPoint.Y, Color.Purple);
((Bitmap)pbImageHolder.Image).SetPixel(curPoint.X, curPoint.Y, Color.Purple)
Con '((Bitmap) pbImageHolder.Image)' stai provando a lanciare pbImageHolder su Bitmap, che probabilmente non funzionerà. Quello che segue getterà l'immagine: '(Bitmap) (pbImageHolder.Image)' –
@DennisTraub: ti sbagli, vedi le specifiche del linguaggio C#, sezione 7.3.1 "Priorità e associatività degli operatori" (http://go.microsoft. com/fwlink /? LinkId = 199552). Operatore di accesso membri "." ha la precedenza sull'operatore cast, quindi, espressioni come '(TypeWichCastTo) variable.Member' valuteranno in questo modo: 1) accedere' Member' di 'variable' prima; 2) quindi lanciare 'Member' su' TypeWichCastTo'. – Dennis
In realtà hai ragione. Grazie per aver spiegato. –
Hi questo è il codice dopo la conversione di VB a C# codice:
((Bitmap)pbImageHolder.Image).SetPixel(curPoint.X, curPoint.Y, Color.Purple);
E se vuoi la conversione del codice da VB a C# e viceversa vai al seguente link: http://www.developerfusion.com/tools/convert/vb-to-csharp/
1) La prima opzione che hai fornito richiede fortemente il controllo nullo; 'as' non è inteso per casi d'uso senza controllo nullo del risultato e non può essere posizionato come equivalente diretto dell'operatore' CType' VB; 2) La seconda opzione ha parentesi non necessarie, vedi risposta al tuo commento qui sotto. Quindi, down-votato, soprattutto per l'uso negligente 'as'. – Dennis
Come ha detto Dennis, non usare 'as' in casi come questo. Potrebbe portare a una "NullReferenceException" non informativa. –
@Dennis è un buon consiglio ma non hai bisogno di downvotare solo per quello. La risposta è ancora utile – SysDragon