1

c# 中有没有办法拥有一个包含多个变量的数组?

例如,我有一个股票的数据:

日期 |开盘 |最高 |最低 |收盘

10-01-2012| 10.00| 11.01| 9.56| 10.56

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

10-03-2012| 9.99 | 10.12| 9.78| 10.11


我想做的是创建一个数组,它接受一个 DateTime 和一个字符串变量,并输出一个双精度/字符串。

所以,如果我想获得 2012 年 10 月 1 日股票的开盘价,我可以说

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

它会以双精度或字符串形式返回 10.00。

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

谢谢你的帮助!

4

3 回答 3

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=... });
        ...
    }
}

顺便说一句,由于double在 C# 中使用类型执行算术时的精度问题,用户decimal使用货币值更安全(我假设这是你在这里所拥有的)。

于 2013-01-26T03:58:07.130 回答
2

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

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

然后,访问价格:

Double price = stocks[Day]["Open"]
于 2013-01-26T04:04:59.693 回答
0

据我所知,你不能用数组来做到这一点,但你可以用 Dictionnary<> 来实现:

Dictionnary<DateTime, double[]>

这样,您就可以按天“索引”您的值,然后在双数组的位置 0 上,您将获得“打开”值

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

openvalue = mydic[Day][0];

于 2013-01-26T03:55:11.390 回答