如何将VB.Net的CType()转换为C#

Mic*_*ael 8 .net c# vb.net casting

我有以下代码段VB NET:

CType(pbImageHolder.Image, Bitmap).SetPixel(curPoint.X, curPoint.Y, Color.Purple)
Run Code Online (Sandbox Code Playgroud)

什么是合适的代码C#

先感谢您.

Den*_*aub 22

在VB.Net中,CType(object, type)将对象强制转换为特定类型.

在C#中有两种方法可以实现这一点:

Bitmap image = pbImageHolder.Image as Bitmap;
image.SetPixel(curPoint.X, curPoint.Y, Color.Purple);
Run Code Online (Sandbox Code Playgroud)

要么

Bitmap image = (Bitmap)(pbImageHolder.Image);
image.SetPixel(curPoint.X, curPoint.Y, Color.Purple);
Run Code Online (Sandbox Code Playgroud)

  • 1)您提供的第一个选项强烈要求空检查; `as`不适用于没有结果空值检查的用例,不能定位为VB`CType`运算符的直接等价物; 2)第二个选项有不必要的括号,请参阅下面的评论答案.所以,投票,特别是'as`疏忽使用. (3认同)

Den*_*nis 9

((Bitmap)pbImageHolder.Image).SetPixel(curPoint.X, curPoint.Y, Color.Purple)
Run Code Online (Sandbox Code Playgroud)

  • @DennisTraub:你错了,参见C#语言规范,第7.3.1节"运算符优先级和关联性"(http://go.microsoft.com/fwlink/?LinkId=199552).会员访问运营商"." 优先于强制转换操作符,因此,像`(TypeWichCastTo)variable.Member`这样的表达式将以这种方式进行评估:1)首先访问`variable`的`Member`; 2)然后将`Member`转换为`TypeWichCastTo`. (5认同)