c#多变量数组

时间:2013-01-26 03:49:33

标签: c# arrays multidimensional-array matrix

c#中有多种方法可以包含多个变量数组吗?

例如,我有股票的数据:

日期|打开|高|低|关闭

2012年10月1日| 10.00 | 11.01 | 9.56 | 10.56

10-02-2012 | 10.56 | 10.99 | 9.21 | 9.99

2012年10月3日| 9.99 | 10.12 | 9.78 | 10.11


我想做的是创建一个采用DateTime和String变量的数组,并输出一个double / string。

所以,如果我想在10-01-2012获得股票的开盘价,我可以说

DateTime Day = Convert.ToDateTime(“10-01-2012”); double openPrice = MyArray [Day,“Open”];

它将返回10.00,作为双精度或字符串。

最好的方法是什么?这甚至可以用阵列吗?如果没有,我还可以使用其他什么方法?我一直在考虑这个问题,我不确定构建这个数组/对象的最佳方法

感谢您的帮助!

3 个答案:

答案 0 :(得分:5)

可能更好的做一个类来包含你的数据,并创建一个数组或列表;

class DailyPrice
{
    DateTime Date { get; set; }
    decimal Open { get; set; }
    decimal Close { get; set; }
    decimal High { get; set; }
    decimal Low { get; set; }
}


static class Program
{
    static void Main()
    {
        List<DailyPrice> prices = new List<DailyPrice>();
        prices.Add(new DailyPrice() { Date = DateTime.Today, Open = 11.11M, Close=... });
        prices.Add(new DailyPrice() { Date = DateTime.Today, Open = 12.14M, High=... });
        ...
    }
}

顺便提一下,由于在C#中使用double类型执行算术时出现精度问题,因此用户decimal对货币值更安全(我假设这是您在此处所拥有的)。

答案 1 :(得分:2)

您可以在字典中使用字典,如下所示:

var stocks = new Dictionary<DateTime, Dictionary<String, Double>>

然后,访问价格:

Double price = stocks[Day]["Open"]

答案 2 :(得分:0)

据我所知你不能用数组做,但是你可以用Dictionnary&lt;&gt;来实现这个目的:

Dictionnary<DateTime, double[]>

通过这种方式,您可以按日“索引”您的值,然后在双数组的位置0上获得“打开”值

要获得您需要的“10.00”值,您必须这样做:

openvalue = mydic[Day][0];