隐秘的标题,但我会从提出问题的代码开始,然后澄清:
Public ReadOnly Property Max As Double
Get
Dim res = (From a As Double() In Values Select a.Max).Max
Return res
End Get
End Property
Values
是一个双重的锯齿状数组,
Private Values()() As Double
在其他地方初始化。我想使用Linq来提取整体最大值。
上面的代码为第一个.Max
提供了以下例外:
BC30978范围变量' Max'将变量隐藏在封闭块中或 先前在查询中定义的范围变量 表达
如果我将属性名称更改为GetMaximum
之类的其他内容,则错误消失。
为什么我不能为从{jagged数组中选择的.Max
变量Double()
调用a
函数?这个电话有什么用它所用方法的名称做什么呢?
我在Windows 8.1上使用Visual Studio Community 2015。 VB.NET或C#中的答案都非常受欢迎。
作为一种解决方法,我可以举例如下:
Private Function GetMax(a As Double()) As Double
Return a.Max
End Function
Public ReadOnly Property Max As Double
Get
Dim res = (From a As Double() In mvalues Select GetMax(a)).Max
Return res
End Get
End Property
没有错误,所以只有内部.Max
负责错误。
如前所述,这也有效:
Public ReadOnly Property GetMax As Double
Get
Dim res = (From a As Double() In Values Select a.Max).Max
Return res
End Get
End Property
因此,第一个.Max
和属性名称之间存在冲突。
答案 0 :(得分:0)
我无法解释为什么你做错了。正如您所指出的那样,我怀疑选择“Max”的范围确实与属性名称冲突。也许其他人可以参与解释。
无论哪种方式,这似乎都可以作为替代方案:
Public ReadOnly Property Max As Double
Get
Return Values.Max(Function(a) a.Max)
End Get
End Property