【发布时间】:2011-12-26 19:01:51
【问题描述】:
这可能是一个长镜头,但我正在尝试将我正在处理的程序中的重复次数降至最低,并且遇到了障碍。从下面的 ClearTextBoxes() 方法中可以看出,为了简洁起见,我宁愿将一段非常重复的代码放在 foreach 循环中。 (最初foreach (object box in customBoxes) 循环不存在)。我尝试使用以下列表执行此操作,但无济于事。我不确定这是否是不可能的,或者我只是做错了。如果您能提供任何帮助,我将不胜感激,如果无法做到,那么我该如何缩小此代码块?
谢谢!
List<object> customBoxes = new List<object>();
customBoxes.AddRange(new[] { "TextBox", "DateBox", "DigitBox", "PhoneBox", "WaterTextBox" });
public void ClearTextBoxes()
{
ChildControls ccChildren = new ChildControls();
foreach (object o in ccChildren.GetChildren(rvraDockPanel, 2))
{
foreach (object box in customBoxes)
{
if (o.GetType() == typeof(TextBox))
{
TextBox txt = (TextBox)o;
txt.Text = "";
}
if (o.GetType() == typeof(DigitBox))
{
DigitBox digit = (DigitBox)o;
digit.Text = "";
}
if (o.GetType() == typeof(PhoneBox))
{
PhoneBox phone = (PhoneBox)o;
phone.Text = "";
}
if (o.GetType() == typeof(DateBox))
{
DateBox date = (DateBox)o;
date.Text = "";
}
if (o.GetType() == typeof(WatermarkTextBox))
{
WatermarkTextBox water = (WatermarkTextBox)o;
water.Text = "";
}
}
}
}
【问题讨论】:
-
我会从每个控件继承并应用一个带有 ClearText() 方法的接口。
-
第二个循环的作用是什么(foreach(customBoxes 中的对象框))?
-
你可以看看这个问题:stackoverflow.com/questions/619767/…
-
@James:将其添加为答案。
-
@jgauffin 我已经添加了,谢谢。
标签: c# list variables object foreach