【问题标题】:Reversing a list of colors and doubles before using them在使用它们之前反转颜色和双打列表
【发布时间】:2014-01-10 21:51:27
【问题描述】:

我的主要方法是SolveInstance() 方法,用于一个名为 Grasshopper 3D 的软件,它本身是 Rhino 的一个插件。

在这个方法中,我声明了两个新列表,第一个是List<Color> colorsList<Double> spaceValues,用于存储它们各自的颜色和双精度对象。

下一行:

        if (!DA.GetDataList(0, colors)) return;
        if (!DA.GetDataList(1, spaceValues)) return;

仅用于将值存储到这些列表中。

我的代码:

        List<Color> colors = new List<Color>();
        List<Double> spaceValues = new List<Double>();

        if (!DA.GetDataList(0, colors)) return;
        if (!DA.GetDataList(1, spaceValues)) return;

        int width = 10;
        int height = 0;

        int U = 1; // numbers of x-objects
        int V = 100; // number of y-objects

        DA.GetData(2, ref height);

        string file = null;
        bool save = false;
        DA.GetData(3, ref file);
        DA.GetData(4, ref save);

        HeatMap map = new HeatMap(colors, width, height, file, U, V);
        _maps.Clear();
        _maps.Add(map);

我的问题是 - 我如何在这两个列表被解析为之前反转:

HeatMap map = new HeatMap(colors, width, height, file, U, V);

我尝试过colors.Reverse().ToArray()colors.ToArray().Reverse(),但两者都向我返回了错误。谢谢。

【问题讨论】:

标签: c# list bitmap


【解决方案1】:

Reverse 会影响列表本身。所以你应该这样做:

colors.Reverse();
HeatMap map = new HeatMap(colors, width, height, file, U, V);

编辑:

查看您的错误,这绝对是问题所在,您试图调用Reverse,它不会返回任何内容并将其存储在您的List&lt;Color&gt; 中。你不能这样做,因为Reverse 是一个void 方法。

【讨论】:

  • @DanielGrankin 不同的是,当我输入我的时,他的不同......如果我没记错的话,我认为他仍然将其分配给colors = colors.Reverse();。我猜他在某个时候编辑过。
  • 此外,这个答案更好地解释了为什么必须调用colors.Reverse()
【解决方案2】:

试试

colors.Reverse();

然后调用

HeatMap map = new HeatMap(colors, width, height, file, U, V);

【讨论】:

  • 那是因为你试图说 colors = colors.Reverse() 而不仅仅是 colors.Reverse(); colors.Reverse() 不返回任何内容,它只是反转列表中的项目。
【解决方案3】:

您不能调用 .Reverse().ToArray() 或 .ToArray().Reverse()

第一个不起作用,因为 .Reverse() 不返回一个列表,而是一个反转底层列表的 void 返回。 IEnumerable 有一个同名的 LINQ 扩展方法,但编译器会先使用 List 版本。

要解决此问题,您可能需要考虑进行简单的调用 Color.Reverse(); spaceValues.Reverse();

这将反转您的列表。 如果要使用扩展方法,可以显式调用,因为所有扩展方法都是静态方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-06
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2013-07-18
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多