Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在Roslyn中,ITypeSymber.ToString()为多维数组返回错误的值?_C#_Roslyn - Fatal编程技术网

C# 为什么在Roslyn中,ITypeSymber.ToString()为多维数组返回错误的值?

C# 为什么在Roslyn中,ITypeSymber.ToString()为多维数组返回错误的值?,c#,roslyn,C#,Roslyn,我的目标是通过Roslyn的ITypeSymbol获得TypeSyntax。 我是这样做的: SF.ParseTypeName(myTypeSymbol.ToString()) 在我们在输入中获得多维数组的myTypeSymbol之前,这种方法工作得很好。 示例: 假设myExpression的类型为int[,] 在这种情况下 SemanticModel.GetTypeInfo(myExpression).Type.ToString(); 返回int[*,*]而不是int[,] 因此SF.P

我的目标是通过Roslyn的
ITypeSymbol
获得
TypeSyntax

我是这样做的:

SF.ParseTypeName(myTypeSymbol.ToString())
在我们在输入中获得多维数组的
myTypeSymbol
之前,这种方法工作得很好。
示例:
假设
myExpression
的类型为
int[,]
在这种情况下

SemanticModel.GetTypeInfo(myExpression).Type.ToString();
返回
int[*,*]
而不是
int[,]

因此
SF.ParseTypeName(“int[*,*])
返回错误的
TypeSyntax

在结果中,
TypeSyntax
rank.size
被解析为
PrefixUnaryExpressionSyntax
,而不是
省略的ArraySizeExpressionSyntax


所以问题是为什么
myTypeSymbol.ToString()
返回
int[*,*]
?对于多维数组,是否有任何解决方法来获得正确的
TypeSyntax

如果您想要控制符号的字符串表示(例如,特定于编程语言),您需要使用
SymbolDisplayFormat
并将其提供给“symbol.ToDisplayString()”。

谢谢您的回答。我通过
ParseTypeName(myTypeSymbol.ToDisplayString(新的SymbolDisplayFormat(typeQualificationStyle:SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces))实现了所需的结果。