如何将这行代码从C#转换为vb.net
本文关键字:转换 vb net 代码 | 更新日期: 2023-09-27 18:22:15
我正在使用http://www.developerfusion.com/tools/convert/csharp-to-vb/
一切都很顺利,除了一行我不知道如何转换:
C#源
result.DrawPolyline(Array.ConvertAll<PointF, Point>(pts, Point.Round), true, new Bgr(Color.Red), 5);
使用转换器可实现此
result.DrawPolyline(Array.ConvertAll(Of PointF, Point)(pts, Point.Round), True, New Bgr(Color.Red), 5)
上一行中的错误为:
未为"Public Shared"的参数"value"指定参数函数舍入(值为System.Drawing.PointF)为System.Drawing.Point'.
这应该将PointF数组转换为Point:
result.DrawPolyline(Array.ConvertAll(Of PointF, Point)(pts, Function(p) Point.Round(p)), True, New Bgr(Color.Red), 5)
您需要将PointF
传递给Point.Round.
测试对象:
Dim pts As PointF() = {New PointF(123.23, 12345.23)}
Dim r = Array.ConvertAll(Of PointF, Point)(
pts,
Function(p) Point.Round(p))
如果您像@Jon提到的那样将委托传递给Point.Round
,也会起作用:
Dim pts As PointF() = {New PointF(123.23, 12345.23)}
Dim r = Array.ConvertAll(Of PointF, Point)(
pts,
AddressOf Point.Round)
Array.ConvertAll
的第二个参数应该是用于转换的方法(请参阅此处)
该行可能在Point.Round
调用之前缺少AddressOf
,因此该方法作为委托传递,而不是执行,如下所示:
result.DrawPolyline(Array.ConvertAll(Of PointF, Point)(pts, AddressOf Point.Round), True, New Bgr(Color.Red), 5)