如何使用字符串和双精度格式创建二维数组

时间:2015-07-14 13:34:46

标签: c# arrays

我想知道是否可以在包含两列的c#(非格式字符串)中创建二维数组。第一个是Date(格式字符串),第二个是Price(格式为double)。

这是我的代码

double [][]=Array[2][];

string[]=Date;

double[]=Prices;

Array[0]=Date;

Array[1]=Prices;

3 个答案:

答案 0 :(得分:4)

无法将string放入double数组中。我建议使用其他类型,例如Tuple<double[], string[]>

Tuple<double[], string[]> t = new Tuple<double[], string[]>(Prices,  Data);

double[] prices = t.Item1;
string[] data = t.Item2;

但你可以更好地创建自己的类型,反映这些属性。

public class YourClass
{
    public double[] Prices {get;set;}
    public string[] Data {get;set;}
}

并像这样使用它:

YourClass c = new YourClass() { Prices = prices, Data = data };

但也许你想要结合这些项目:

public class PriceInfo
{
    public double Price {get;set;}
    public string Data {get;set;}
}

只需创建一个列表:

List<PriceInfo> list = new List<PriceInfo>();
list.Add(new PriceInfo() { Price = 1d, Data = "abc" });

答案 1 :(得分:0)

可以在数组中包含这两种类型,但不会修复它。您必须声明一个类型为object的数组,并将您的值赋给该数组。但是,只要引用这些值,您就必须进行类型转换。

object[][] array;

我建议创建一个包含值的对象,然后创建一个数组。

public class Container
{
     public string Date { get; set; }
     public double[] Prices { get; set; }
}

Container[] array;
array[0].Date = "7/14/15";
array[0].Prices[0] = 100.00;

答案 2 :(得分:0)

这是另一种选择。

看起来您希望能够查询给定日期的价格。如果是这种情况,解决的一种方法是使用将日期映射到双精度数组的字典:

var pricesByDate = new Dictionary<DateTime, double[]>();

他们可以使用字典来查找特定日期的价格,如下所示:

var prices = pricesByDate[myDateToLookU[];

一个简单的控制台应用程序,演示如下:

using System;
using System.Collections.Generic;

namespace Demo
{
    public class Program
    {
        private static void Main()
        {
            var pricesByDate = new Dictionary<DateTime, double[]>();

            var date1 = new DateTime(2015, 01, 01);
            var date2 = new DateTime(2015, 01, 02);
            var date3 = new DateTime(2015, 01, 03);

            pricesByDate[date1] = new[] { 1.01, 1.02, 1.03 };
            pricesByDate[date2] = new[] { 2.01, 2.02, 2.03, 2.04 };
            pricesByDate[date3] = new[] { 3.01, 3.02 };

            Console.WriteLine("Prices for {0}:", date2);

            var pricesForDate2 = pricesByDate[date2];

            foreach (double price in pricesForDate2)
                Console.WriteLine(price);

            Console.WriteLine("\nAll Dates and prices:");

            foreach (var entry in pricesByDate)
            {
                Console.Write("Prices for {0}: ", entry.Key.ToShortDateString());

                foreach (double price in entry.Value)
                    Console.Write(price + " ");

                Console.WriteLine();
            }
        }
    }
}

我可能会使用List<double>而不是double[],因为它允许您在创建后添加和删除值。