想象一下下面的VB.NET代码:
Dim a
a = {1, 2}
如果我发现这种情况,我希望a
成为强类型,即Dim a As Integer()
。 {1, 2}
本身是CollectionInitializerSyntax
,我们可以参考initExpr
。
问题是 - 为什么我不能使用
获取initExpr
的类型信息
model.GetTypeInfo(initExpr).Type
其中model是a = {1, 2}
表达式所在的文档的语义模型。也可以使用语法树可视化工具查看问题,只需将光标放在初始化程序上,右键单击initExpr
并选择“查看TypeSymbol”,它只显示空白页。
我认为必须有一种方法可以做到这一点,因为隐式类型数组的工作方式就像这样:
Dim a = {1, 2}
将光标放在Visual Studio中的a
上会显示其类型为Integer()
。所以底线是,如何在roslyn中获取initExpr
。