gpt4 book ai didi

c# - 在类层次结构中查找最小值

转载 作者:行者123 更新时间:2023-11-30 20:13:57 26 4
gpt4 key购买 nike

给定以下类(假设它们已填充),您将如何找到 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/

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