功能没有被调用

use*_*646 0 c# function

我的一些代码遇到问题,我想调用一个方法,但是方法没有被调用,我不知道为什么.

    var rows = GetDataGridRows(dgTickets);
    int intTickets = 0;
    foreach (System.Windows.Controls.DataGridRow r in rows)
    { 
        //some code
    } 

    private IEnumerable<System.Windows.Controls.DataGridRow>
               GetDataGridRows(System.Windows.Controls.DataGrid grid)
    {
       var itemsSource = grid.ItemsSource as IEnumerable;
       if (null == itemsSource) yield return null;
       foreach (var item in itemsSource)
       {
           var row = grid.ItemContainerGenerator.ContainerFromItem(item)
                                 as System.Windows.Controls.DataGridRow;
           if (null != row) yield return row;
       }
    }
Run Code Online (Sandbox Code Playgroud)

var rows = GetDataGridRows(dgTickets); 没有调用该函数,只是去 int intTickets = 0

我不知道该怎么做

提前致谢

Mat*_*ott 7

您的方法GetDataGridRows返回一个IEnumerable使用yield.直到你的foreach块被执行,你才会进入这个方法.

使用该yield关键字允许C#编译器使用它的状态机生成器来创建IEnumerable它返回的实现.IEnumerable使用延迟调用,这实际上意味着它只在需要时进行交互.这就是你看到它跳过申报下一步骤,因为在这一点上,它是唯一的一个实例IEnuemrable至今尚未通过进行循环.