2012-09-03 21 views

Respuesta

19

En VB.Net CType(object, type) arroja un objeto a un tipo específico.

Hay dos maneras de lograr esto en 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); 
+3

1) La primera opción que proporcionó requiere fuertemente la verificación nula; 'as' no está destinado a casos de uso sin verificación nula del resultado y no puede posicionarse como equivalente directo del operador' CType' de VB; 2) La segunda opción tiene corchetes innecesarios, ver respuesta a su comentario a continuación. Por lo tanto, votado negativamente, especialmente para el uso negligente 'como'. – Dennis

+0

Como dijo Dennis, no use 'as' en casos como este. Podría llevar a una 'NullReferenceException' no informativa. –

+0

@Dennis es un buen consejo, pero no es necesario rechazarlo solo por eso. La respuesta sigue siendo útil – SysDragon

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

Con '((Bitmap) pbImageHolder.Image)' su intento de convertir pbImageHolder a Bitmap, que probablemente no funcionará. Lo siguiente arrojará la imagen: '(Bitmap) (pbImageHolder.Image)' –

+4

@DennisTraub: está equivocado, vea la especificación del lenguaje C#, sección 7.3.1 "Preferencia del operador y asociatividad" (http://go.microsoft.com). com/fwlink /? LinkId = 199552). Operador de acceso de miembro "." tiene precedencia sobre el operador de reparto, por lo tanto, las expresiones como '(TypeWichCastTo) variable.Member' se evaluarán de esta manera: 1) acceder' Member' of 'variable' first; 2) luego convierte 'Member' a' TypeWichCastTo'. – Dennis

+1

En realidad, tienes razón. Gracias por la explicación. –

2

Hola este es el código después de VB conversión a código C#:

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

Y si desea la conversión de código de VB a C# y viceversa vaya a través del siguiente enlace: http://www.developerfusion.com/tools/convert/vb-to-csharp/