我的一些代码遇到问题,我想调用一个方法,但是方法没有被调用,我不知道为什么.
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
我不知道该怎么做
提前致谢
您的方法GetDataGridRows返回一个IEnumerable使用yield.直到你的foreach块被执行,你才会进入这个方法.
使用该yield关键字允许C#编译器使用它的状态机生成器来创建IEnumerable它返回的实现.IEnumerable使用延迟调用,这实际上意味着它只在需要时进行交互.这就是你看到它跳过申报下一步骤,因为在这一点上,它是唯一的一个实例IEnuemrable至今尚未通过进行循环.
| 归档时间: |
|
| 查看次数: |
1675 次 |
| 最近记录: |