C# 编辑并继续:错误 4054

当启用“编辑并继续”后,修改包含“yield return”或“yield break”语句的“方法 | 属性 | 索引器 | 运算符”将会阻止调试会话继续进行

当尝试修改包含 yield return 或 yield break 语句的方法、属性、索引器或运算符时,将发生此错误。 有关更多信息,请参见 yield(C# 参考)。 “编辑并继续”在调试期间不支持此更改。

考虑下列代码:

class Program

{

   private int[] items = { 1, 2, 3 };

   System.Collections.Generic.IEnumerable<int> Range(int start, int end)

   {

      for (int index = start; index < end; index++)

      {

      yield return items[index];

      }

   }

   static void Main()

   {

      Program p = new Program();

      foreach (int item in p.Range(0, 2))

      {

         

      }

   }

}

如果您在 yield return items[index] 上设置了一个断点,然后开始调试并尝试在 Range 方法中添加一个局部变量声明 int a = 10,则将发生此错误。

更正此错误

  • 撤消更改,然后在不进行更改的情况下继续调试。

    - 或 -

    在**“调试”菜单上单击“停止调试”**,进行更改,然后启动新的调试会话。

请参见

参考

yield(C# 参考)

受支持的代码更改 (C#)

编辑并继续 (Visual C#)

其他资源

“编辑并继续”错误和警告 (C#)