函数没有被调用
本文关键字:调用 函数 | 更新日期: 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();