罗斯林错误?在非共享成员上,我在使用 'shared member initializer' 时遇到错误

A Roslyn bug? On non-shared member, I'm getting error that I'm using 'shared member initializer'

有以下简单代码:

Class A

    Private value As Integer = 1

    Sub Action(Optional param1 As Integer = value)
    End Sub

End Class

Visual Studio 抱怨默认值 (value) 错误 BC30369:

Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.

对于这种情况,这真的是正确的错误吗?方法未分享。

在Visual Studio2012年或2013年,同例错误为

Constant expression is required.

绝对有道理。

经过进一步研究,我认为编译器的检查顺序存在问题。

如果我更改代码,使 value 成为成员 Shared,我会得到正确的结果:错误 BC30059

Constant expression is required.

因为除了常量之外什么都不能放入 可选 子句的默认值,检查上面的 BC30059 ("Constant expression is required." ) 显然应该 "earlier" 而不是 BC30369 的检查(有问题)。

我创建了 bug report at Microsoft Connect