我正在尝试使用
Immediate Window
在Visual Studio 2017中。
我有一个变量叫做
_myItems
哪种类型的
Dictionary<int, Dictionary<int, List<int>>>
.
我确实撞到了
breakpoint
?_myItems
在窗口中,我会得到一个如下列表:
Count = 9
[0]: {[536], System.Collections.Generic.Dictionary`2[System.Int32,System.Collections.Generic.List`1[System.Int32]]]}
[1]... omitted for clearance
... omitted for clearance
... omitted for clearance
[8]... omitted for clearance
为了确保可以在即时窗口中写入文件,我运行了:
File.WriteAllText("test.txt", "testing purposes");
然后我尝试了以下方法:
?(foreach (KeyValuePair<int, Dictionary<int, List<int>>> pair in _myItems) { foreach (KeyValuePair<int, List<int>> valuePair in pair.Value) { foreach (int numberToWrite in valuePair.Value) { File.AppendAllText("test.txt",numberToWrite.ToString()); } }})
但我得到以下错误:
错误CS1525:表达式项“foreach”无效
我四处寻找
this question
但公认的答案只是说你能做到。
foreach
循环以将值写入文件。
请注意,我知道我应该在代码中这样做,但我不认为以后需要这些值。我只是在检查平均值。当我使用完我编写的应用程序后,我决定使用这些值。考虑到准备值的时间花费了数小时,不可能仅仅停止执行并在代码中重新编写所需内容,然后再次完成整个过程。
我也知道我能跑
?_myItems[536][0]
有没有可能使这项工作立即窗口?
更新
我按照答案中的建议做了:
_myItems.Select(x => x.Value)
.ToList()
.ForEach(pair => pair
.ToList()
.ForEach(valuePair => valuePair
.Value
.ForEach(numberToWrite => File.AppendAllText("test.txt", numberToWrite.ToString()))))
方法System.Collections.Generic.List`1[System.Collections.Generic.Dictionary`2[System.Int32,System.Collections.Generic.List`1[System.Int32]]].ForEach()调用本机方法Microsoft.Win32.Win32 native.GetFullPathName()。不支持在此上下文中计算本机方法。
我甚至试着
Debug.Print
_myItems.ToList().ForEach(pair => System.Diagnostics.Debug.Print(pair.Key));
最后我也犯了同样的错误。这次调用本机方法时出错:
System.Diagnostics.Debugger.IsLogging()
我搜索了这个错误并根据
this answer
建议勾选
从调试选项。但是,这个选项在我的例子中是灰色的,因为我已经在调试会话中了。