如何将根据用户输入而变化的变量添加到sortedlist C#中?

时间:2016-07-25 06:58:55

标签: c# generics collections sortedlist

标题并不合适,但我不善于在一个标题中解释。这里是:我想将一个根据userinput而变化的双变量放入一个Sortedlist,然后遍历它,以便输出如下所示: 距离:1 距离:2 距离:3 我不能使用arraylist因为我不知道我会得到多少双重值。

1 个答案:

答案 0 :(得分:0)

我不确定你要求的是什么,所以写了一个有用的代码"对于两种情况:首先,您要访问用户编写的最后一个值。其次,您要访问列表中的所有值。第三,你希望所有这些都在一个变量上。

public class DistanceList : List<double>
{
    public override string ToString()
    {
        int count = 1;
        string resultString = String.Empty;
        foreach (var item in this)
        {
            resultString = String.Concat(resultString, "Distance ", count.ToString(), ": ", item.ToString(), ";");
            count = +1;
        }
        return resultString;
    }

    public static implicit operator double(DistanceList list)
    {
        return list.Single();
    }
}

这个类重写了ToString方法,并循环遍历所有值并将它们添加到字符串上,给出你在问题上声明的输出&#34;输出将是这样的:距离:1距离:2距离:3&#34;。

如果你想要最后一个值,那么double的隐式转换会返回列表的唯一值,因为一个值就像常规变量一样,如果你尝试使用double作为一个double,它将只有一个值一个例外。

请注意,您将无法直接写入此变量并希望在列表中添加该项,您仍需要使用List<T>().Add方法。

但我真的希望这不是你所要求的,因为这种设计会给你带来很多麻烦。

您是否总是检查是否只有一个项目,以便您可以将其视为双重项,或者需要处理多个值?你可能会忘记这样做...

这个类只在一个字符串上转换它们,如果你需要它们作为双倍总结它们怎么办?您最终可能会将该字符串解析回List<double> ...