vb.net - 类中具有参数 int 和 double 的两个实例构造函数(如果没有缩小转换,就无法调用可访问的“New”)
问题描述
由于一个新功能,我们需要一个名为C_Geo_Data
. 该类包含一个构造函数,如下所示:
Public Sub New(_coord_Y As Double, _coord_X As Double, ByVal _srid As Integer)
'...
End Sub
现在我们需要添加另一个具有以下参数的构造函数:
Public Sub New(_coord_Y As Double, _coord_X As Double, ByVal _coord_Z As Double)
'...
End Sub
请注意第三个参数的数据类型差异。现在类中已经有一个函数调用了这个构造函数,并且第三个参数 astring
被交给了构造函数。当然编译器不知道要使用哪个构造函数并给出如下编译错误:
Overload resolution failed because no accessible 'New' can be called without a narrowing conversion:
'Public Sub New(_coord_Y As Double, _coord_X As Double, _coord_Z As Double)': Argument matching parameter '_coord_Z' narrows from 'String' to 'Double'.
'Public Sub New(_coord_Y As Double, _coord_X As Double, _srid As Integer)': Argument matching parameter '_srid' narrows from 'String' to 'Integer'.
我通过将字符串显式转换为整数 ( CInt(string)
) 来修复错误,但我想知道是否有任何方法可以告诉调用者使用哪个构造函数而无需事先转换参数:
也许是这样的:
Dim test As String ="4326"
New GeoPoint(y,x,_srid=test)
解决方案
你几乎得到了正确的答案。但是您需要在参数名称后加一个冒号。
Dim test As String ="4326"
New GeoPoint(y,x,_srid:=test)
推荐阅读
- c# - 身份验证服务。ASP.Net Core 中的 HttpContext.Current.Session
- java - JOOQ“IN”查询抛出空指针异常
- python - Python:具有关键字键盘中断的健壮连续循环
- javascript - 上传多个文件和元数据的最佳方式是什么?
- postgresql - 在 Postgresql 中合并两个表,优先考虑一个特定的表
- c++ - condition_variable::notify_one 不会立即解除阻塞等待?
- hybris - 如何根据用户角色在后台隐藏自定义属性?
- date - SSAS 表格 - 事实表和第二个日期维度之间没有关系
- python - 获取 Spotify Artist URI(Python 初学者)
- python - Discord 机器人在特定输入上说出特定内容