函数没有被调用

本文关键字:调用 函数 | 更新日期: 2023-09-27 17:54:56

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

    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;
       }
    }

var rows = GetDataGridRows(dgTickets);不调用函数,直接转到int intTickets = 0

我不知道该怎么办

Thanks in advance

函数没有被调用

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

使用yield关键字允许c#编译器使用它的状态机生成器来创建它返回的IEnumerable的实现。IEnumerable使用延迟调用,这实际上意味着它只在需要时进行交互。在这里,您可以看到它跳过声明跳到下一步,因为此时,它只是IEnuemrable的一个实例,还没有循环通过。

我认为你应该使用…

table_id.DataSource = GetDataGridRows(dgTickets);
table_id.DataBind();