2012-09-03 6 views

ответ

19

В VB.Net CType(object, type) отбрасывает объект к определенному типу.

Есть два способа сделать это в C#:

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

или

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

1) Первый предоставленный вами вариант настоятельно требует нулевой проверки; 'as' не предназначен для использования без нулевой проверки результата и не может быть позиционирован как прямой эквивалент оператора VB' CType'; 2) Второй вариант имеет ненужные скобки, см. Ответ на свой комментарий ниже. Итак, проголосовали, особенно за «как» нерадивое использование. – Dennis

+0

Как сказал Деннис, не используйте 'as' в подобных случаях. Это может привести к неинформативному «исключению NullReferenceException». –

+0

@ Dennis - хороший совет, но вам не нужно ограничивать его только из-за этого. Ответ по-прежнему полезен – SysDragon

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

С помощью '((Растровое изображение) pbImageHolder.Image)' Ваша попытка передать pbImageHolder в Bitmap, что, вероятно, не будет работать. Далее будет показано изображение: '(Bitmap) (pbImageHolder.Image)' –

+4

@DennisTraub: вы ошибаетесь, см. Спецификацию языка C#, раздел 7.3.1 «Приоритет операторов и ассоциативность» (http://go.microsoft. ком/fwlink /? LinkId = 199552). Оператор доступа к членству "." имеет приоритет над оператором литья, поэтому выражения, такие как переменная '(TypeWichCastTo), будут вычисляться следующим образом: 1) сначала получить доступ к' Member' 'variable'; 2), затем введите 'Member' в' TypeWichCastTo'. – Dennis

+1

На самом деле вы правы. Спасибо за объяснение. –

2

Привет это код после преобразования VB в C# код:

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

И если вы хотите преобразовать код с VB на C# и наоборот, по следующей ссылке: http://www.developerfusion.com/tools/convert/vb-to-csharp/

Смежные вопросы