У меня есть этот сегмент кода в VB NET
:Как перевести CType VB.NET (в) на C#
CType(pbImageHolder.Image, Bitmap).SetPixel(curPoint.X, curPoint.Y, Color.Purple)
что соответствующий код в C#
?
Заранее спасибо.
У меня есть этот сегмент кода в VB NET
:Как перевести CType VB.NET (в) на C#
CType(pbImageHolder.Image, Bitmap).SetPixel(curPoint.X, curPoint.Y, Color.Purple)
что соответствующий код в C#
?
Заранее спасибо.
В 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);
((Bitmap)pbImageHolder.Image).SetPixel(curPoint.X, curPoint.Y, Color.Purple)
С помощью '((Растровое изображение) pbImageHolder.Image)' Ваша попытка передать pbImageHolder в Bitmap, что, вероятно, не будет работать. Далее будет показано изображение: '(Bitmap) (pbImageHolder.Image)' –
@DennisTraub: вы ошибаетесь, см. Спецификацию языка C#, раздел 7.3.1 «Приоритет операторов и ассоциативность» (http://go.microsoft. ком/fwlink /? LinkId = 199552). Оператор доступа к членству "." имеет приоритет над оператором литья, поэтому выражения, такие как переменная '(TypeWichCastTo), будут вычисляться следующим образом: 1) сначала получить доступ к' Member' 'variable'; 2), затем введите 'Member' в' TypeWichCastTo'. – Dennis
На самом деле вы правы. Спасибо за объяснение. –
Привет это код после преобразования VB в C# код:
((Bitmap)pbImageHolder.Image).SetPixel(curPoint.X, curPoint.Y, Color.Purple);
И если вы хотите преобразовать код с VB на C# и наоборот, по следующей ссылке: http://www.developerfusion.com/tools/convert/vb-to-csharp/
1) Первый предоставленный вами вариант настоятельно требует нулевой проверки; 'as' не предназначен для использования без нулевой проверки результата и не может быть позиционирован как прямой эквивалент оператора VB' CType'; 2) Второй вариант имеет ненужные скобки, см. Ответ на свой комментарий ниже. Итак, проголосовали, особенно за «как» нерадивое использование. – Dennis
Как сказал Деннис, не используйте 'as' в подобных случаях. Это может привести к неинформативному «исключению NullReferenceException». –
@ Dennis - хороший совет, но вам не нужно ограничивать его только из-за этого. Ответ по-прежнему полезен – SysDragon