Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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
.net 如何将方法ReturnType与预定义类型进行比较_.net_Roslyn - Fatal编程技术网

.net 如何将方法ReturnType与预定义类型进行比较

.net 如何将方法ReturnType与预定义类型进行比较,.net,roslyn,.net,Roslyn,使用Microsoft Roslyn,我试图确定方法返回类型是否为void。 我有MethodDeclarationSyntax的句柄,可以看到名为“ReturnType”的属性。这是一个预定义的void类型。我真的需要检查关键字种类吗?有更好的方法吗 ((PredefinedTypeSyntax)methodDec.ReturnType).Keyword.Kind != SyntaxKind.VoidKeyword 有没有推荐的方法来完成我想做的事情?对于void,这很完美,因为没有其他方

使用Microsoft Roslyn,我试图确定方法返回类型是否为void。
我有MethodDeclarationSyntax的句柄,可以看到名为“ReturnType”的属性。这是一个预定义的void类型。我真的需要检查关键字种类吗?有更好的方法吗

((PredefinedTypeSyntax)methodDec.ReturnType).Keyword.Kind  != SyntaxKind.VoidKeyword

有没有推荐的方法来完成我想做的事情?

对于
void
,这很完美,因为没有其他方法可以说。这里明确禁止说
System.Void

对于其他预定义类型,如
int
,请记住,您可以使用关键字或.NET类型
System.Int32
编写它。根据您的场景,您实际上可能需要区分它们,因此语法检查仍然是正确的。如果您不关心差异,只想知道它是否是整数,那么应该使用
语义模型进行绑定:

var methodSymbol = (MethodSymbol)semanticModel.GetDeclaredSymbol(methodDecl);
if (methodSymbol.ReturnType.SpecialType == SpecialType.System_Int32)
{
    /* ...whatever goes here */
}
MethodSymbol
还有一个
ReturnsVoid
属性,如果碰巧有该属性的符号,您可能会发现该属性很有用