快捷方式自动将表达式的结果分配到显式类型命名变量[Visual Studio]

时间:2015-11-03 12:17:45

标签: visual-studio visual-studio-2015 intellisense

是否有快捷方式将表达式的结果分配给命名变量?

我经常先写表达式,因为我不确定返回的数据类型。

让我们说:

Add(0.5, 1.5); // Luckily Intellisense tooltips tell me it returns double of 2.0

所以,必须手动编写:double result = <expression>到:

double variable1 = Add(0.5, 1.5);

因为这几乎一直都在发生。是否有快捷方式/助手将结果指定为变量?

(代码用C#编写)

1 个答案:

答案 0 :(得分:0)

我为Visual Commander创建了命令Create a typed variable from the current method invocation。它使用Roslyn,主要代码是:

Microsoft.VisualStudio.Text.SnapshotPoint caretPosition = textView.Caret.Position.BufferPosition;
Microsoft.CodeAnalysis.Document document = caretPosition.Snapshot.GetOpenDocumentInCurrentContextWithChanges();
Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax invocationExpressionNode = 
    document.GetSyntaxRootAsync().Result.FindToken(caretPosition).Parent.AncestorsAndSelf().
        OfType<Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax>().FirstOrDefault();
if (invocationExpressionNode != null)
{
    Microsoft.CodeAnalysis.SemanticModel semanticModel = document.GetSemanticModelAsync().Result;
    Microsoft.CodeAnalysis.IMethodSymbol methodSymbol = semanticModel.GetSymbolInfo(invocationExpressionNode).Symbol as 
        Microsoft.CodeAnalysis.IMethodSymbol;
    textView.TextBuffer.Insert(invocationExpressionNode.SpanStart, methodSymbol.ReturnType.ToString() + " v = ");
}