gpt4 book ai didi

c# - 我可以有一个方法返回 IEnumerator 并在 foreach 循环中使用它吗?

转载 作者:IT王子 更新时间:2023-10-29 04:43:10 26 4
gpt4 key购买 nike

我需要设置表单上每个文本框的高度,其中一些文本框嵌套在其他控件中。我以为我可以做这样的事情:

private static IEnumerator<TextBox> FindTextBoxes(Control rootControl)
{
foreach (Control control in rootControl.Controls)
{
if (control.Controls.Count > 0)
{
// Recursively search for any TextBoxes within each child control
foreach (TextBox textBox in FindTextBoxes(control))
{
yield return textBox;
}
}

TextBox textBox2 = control as TextBox;
if (textBox2 != null)
{
yield return textBox2;
}
}
}

像这样使用它:

foreach(TextBox textBox in FindTextBoxes(this))
{
textBox.Height = height;
}

但是编译器当然会吐出它的假人,因为 foreach 需要一个 IEnumerable 而不是 IEnumerator

有没有一种方法可以做到这一点,而不必使用 GetEnumerator() 方法创建一个单独的类?

最佳答案

正如编译器告诉您的那样,您需要将返回类型更改为 IEnumerable。这就是 yield return 语法的工作原理。

关于c# - 我可以有一个方法返回 IEnumerator<T> 并在 foreach 循环中使用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com