我想知道是否可以在包含两列的c#(非格式字符串)中创建二维数组。第一个是Date(格式字符串),第二个是Price(格式为double)。
这是我的代码
double [][]=Array[2][];
string[]=Date;
double[]=Prices;
Array[0]=Date;
Array[1]=Prices;
答案 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[]
,因为它允许您在创建后添加和删除值。