2015-11-03 29 views
0

是否有快捷方式將表達式的結果分配給命名變量?快捷方式將表達式的結果自動分配給明確鍵入的命名變量[Visual Studio]

我經常先寫表達式,因爲我不確定返回的數據類型。

比方說:

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#)

+0

你可以寫'var a = Add(0.5,1.5)'並讓VS確定數據類型。請參閱參考:https://msdn.microsoft.com/en-us/library/bb383973.aspx – gdir

+0

我喜歡**類型**是明確的,除非它是匿名類型或太長時間寫。更重要的是它的可讀性。所以我爲這種情況避免了'var'。 – Yeo

回答

0

我創建了命令Create a typed variable from the current method invocation爲Visual指揮官。它使用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 = "); 
} 
相關問題