所以我有两个集合 - 一个 int? , 和 string 之一.
我想对两者进行迭代,并且我有一大段代码要对它们执行。但是,存在一些细微差别。如果值为 int? ,需要一些额外的代码。
我正在努力遵循 DRY 原则,所以我不想重写我的代码。我也不想将它放在外部函数中,因为它已经从我的 MVC 应用程序 Controller 代码中抽象出来,我不希望它变得不必要地复杂。
有没有办法在c#中做这样的事情
foreach(object o in (ints && strings))
{
if(o is int)
{
// do in specific stuff
}
// do all my generic stuff.
}
编辑: 实际上是 int?不是 int .当我尝试将它们组合成 List<object> 类型的通用列表时我得到一个错误
请您参考如下方法:
有了这个特殊的结构,您可以使用 Concat 将它们组合成一个大对象集合,例如:
foreach (object o in ints.Cast<object>().Concat(strings.Cast<object>()))
但我可能会建议将您的功能分解为一个方法,并运行两个循环:
foreach (int i in ints) {
DoSomething(i);
DoSomethingWithInt(i);
}
foreach (string s in strings) {
DoSomething(s);
DoSomethingWithString(s);
}
在我看来,这将使事情保持整洁并更具可读性。
