![](/img/trans.png)
[英]C#:Visual-Studio: How to maximize a specific panel on a winform
[英]How to watch (i.e. debug) extra-lambda variable inside lambda scope in C#/Visual-Studio/Unity3d?
將 Visual Studio Professional 2015 與 Unity 一起使用時,我注意到當我單步執行 lambda 表達式的主體時,我無法觀察在 lambda 表達式外部聲明/分配但在 lambda 表達式內部讀取的變量。
private IEnumerator DoTheThing(string filter)
{
TextureDownload texDl = new TextureDownload();
texDl.OnCompleted += () =>
{
_log.Log("Mesh texture " + texDl.GetType() + ":" + texDl.GetHashCode());
textures.Add(texDl);
};
yield break;
}
我收到錯誤
標識符
texDl
不在范圍內
顯然變量在這個范圍內是可以訪問的,因為 lambda 函數正在使用它。
是否有任何遠程簡單/方便的方法來觀察這些變量的值?
事實證明這是對最后一個對象的循環引用中的C# lambda 調用的變體
Mono/Unity 存在協程和 lambda 表達式的問題;
協程本身也是一個隱式閉包,它將所有局部變量作為成員變量移動到一個單獨的類。 這意味着不可能在生成器方法中創建“真正的”局部變量。 這就是顯式局部變量聲明不起作用的原因。
見http://answers.unity3d.com/questions/974036/c-lambda-call-in-for-loop-references-to-last-objec.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.