.net允许......
<script>
var button = document.getElementById("button");
button.onclick = function() {
var geoSuccess = function (position) {
var startPos = position;
alert("longlat" + startPos.coords.longitude);
};
var geoError = function (error) {
alert("unable");
};
navigator.geolocation.getCurrentPosition(geoSuccess, geoError);
};
</script>
它通过查看参数的类型来确定要调用哪一个,例如...
Public Function One(A as Integer) As String...
Public Function One(B as String) As String...
好的,为什么你不能这样做......
Dim A As String = One(5)
编译器可以获得相同数量的信息......
Public Function One(A as Integer) As String...
Public Function One(B as Integer) As Integer...
我尝试解决的具体问题是在Dim A As Integer = One(5) ' should know to call the second version
中返回Values
,以便COM Interop 可以看到。为此,我只需将Dictionary(Of Integer, MyClass)
作为.Values
返回。但后来我丢失了我自己的代码中的类型,这是一个PITA。如果我可以有两个方法,我可以有一个返回IEnumerable,另一个返回List(Of MyClass),两个地方的API都是相同的。我可以有两种不同的方法名称,但这种方法会失败。
我对任何修复底层问题的解决方案持开放态度......我可以返回一种类型,避免在我自己的代码中使用所有DirectCast,同时COM Interop仍然可以看到它吗?
答案 0 :(得分:4)
简短回答:因为返回类型不包含在方法的签名中
以下内容不属于会员的签名,因此不能超载:
- 类型成员的修饰符(例如,
Shared
或Private
)。- 参数的修饰符(例如,
ByVal
或ByRef
)。- 参数的名称。
- 方法的返回类型或属性的元素类型。