VisualStudio2019でイミディエイトウィンドウでラムダ式が実行できません。
調べたところ、VS2015からラムダ式が実行できるようになったらしいのですが、できませんでした。
Unity上で実行したせいか、以下のようなエラーが発生しましました。
TypeMirrorExtensions.GetMethodsInHierarchy
などを検索してもいまいちヒットせずわかりませんでした。
Enumerable.Range(0, 2).Where(i => i < 2).Count() System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。 場所 SyntaxTree.VisualStudio.Unity.Debugger.TypeMirrorExtensions.GetMethodsInHierarchy(TypeMirror type, String name, TypeMirror[] genericArguments, UnityValue[] arguments, Boolean strict) 場所 SyntaxTree.VisualStudio.Unity.Debugger.Evaluation.ExpressionEvaluator.VisitInvocationExpression(InvocationExpressionSyntax node) 場所 Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax.Accept(CSharpSyntaxVisitor visitor) 場所 SyntaxTree.VisualStudio.Unity.Debugger.UnityExpression.<>c__DisplayClass9_0.<EvaluateAsync>b__0() 場所 System.Threading.Tasks.Task`1.InnerInvoke() 場所 System.Threading.Tasks.Task.Execute()
また以下のようなコードのDo()メソッドにブレークポイントを貼って、this.Do(()=>UnityEngine.Debug.Log("a"))
実行するとサポートされていないノード
と表示されてしまいます。
cs
1using System; 2using System.Linq; 3using UnityEngine; 4 5public class Hoge 6{ 7 public void Do(Action a) 8 { 9 a.Invoke(); 10 } 11} 12
↓イミディエイトウィンドウでの表示
this.Do(()=>UnityEngine.Debug.Log("a")) サポートされていないノード: `()=>UnityEngine.Debug.Log("a")
Unity以外でのProjectでVisualStudio2019を使用するとラムダ式が実行できたので、Unity側の問題かと思うのですが、推測でも構わないので原因を教えていただきたいです。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/09 14:06