给定以下类(假设它们已填充),您将如何找到 test1
实例的任何 val
的最小值?
public class test1
{
public int val;
public List<test2> Tests;
}
public class test2
{
public int val;
public List<test3> Tests;
}
public class test3
{
public int val;
public List<test4> Tests;
}
public class test4
{
public int val;
}
最佳答案
您可以在顶级类中编写一个方法,将结构展平为 IEnumerable。
public IEnumerable<int> FlattenVal()
{
yield return this.val;
foreach (var t2 in this.Tests)
{
yield return t2.val;
foreach (var t3 in t2.Tests)
{
yield return t3.val;
foreach (var t4 in t3.Tests)
{
yield return t4.val;
}
}
}
}
那么你可以这样调用它:
var t = new Test1();
Console.WriteLine(t.FlattenVal().Min());
如果您不能将方法直接添加到类(非部分的、代码生成的或在库中),那么您可以使用扩展方法:
public static IEnumerable<int> FlattenVal(this Test1 t1)
{
yield return t1.val;
foreach (var t2 in t1.Tests)
{
yield return t2.val;
foreach (var t3 in t2.Tests)
{
yield return t3.val;
foreach (var t4 in t3.Tests)
{
yield return t4.val;
}
}
}
}
关于c# - 在类层次结构中查找最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162433/