我正在尝试创建一个Collection,它将Collection作为其成员之一。该应用程序是跟踪股票价格。
主要收藏品应如下所示:符号,库存名称,(价格收集')
'价格收集'应如下所示:日期,价格
一些示例数据
APPL,Apple
[1/1/2011年,$ 245; 1/2/2011年,$ 247; 1/3/2011年,$ 242; .....]
所以在c#中如何创建一个集合类作为成员的集合类?那么如何访问该集合的“价格集”成员呢? (我已经设法找出了创建并且能够在两个级别添加,但我只能访问顶级才能看到内容。我无法弄清楚如何访问我添加的“价格”也不能看看它的任何方法
答案 0 :(得分:1)
List<T>
是一个泛型类,可以包含任何类型的类实例的集合。因此,只需创建一个类,将另一个集合作为其成员之一(仅示例):
class Stock
{
public Symbol {get;set;}
public Name {get;set;}
public List<Quote> Quotes {get;set;}
}
现在创建一个List<Stock>
并为您添加到集合中的每个Stock填充Prices
成员,即
var myStocks = new List<Stock>();
Stock stock = new Stock()
{
Symbol = "MSFT",
..
Quotes = new List<Quote>()
}
myStocks.Add(stock);
您可以像访问任何其他成员一样访问价格:
foreach(Stock stock in myStocks)
{
foreach(Quote quote in stock.Quotes)
Console.WriteLine(string.Format("{0} : {1}$", quote.Date, quote.Price));
}
答案 1 :(得分:0)
你可以使用List里面的List。对于您的示例,它可以是
public class PriceList
{
DateTime priceTime;
Double price;
}
public class QuoteList
{
String symbol;
String stockName;
PriceList priceCollection;
}
List<QuoteList> myQuote = new List<QuoteList>();
QuoteList将被视为普通的List集合,如整数列表或带有Add,Remove,Fetch操作的字符串列表。
答案 2 :(得分:0)
所以你可能会有一个Stock
和一个Price
类,例如:
public class Price
{
public DateTime Date { get; set; }
public decimal Price { get; set; }
}
Price
类有一个日期和价格属性(我不喜欢这个类的名称,但仅用于说明)。 Price
类将用于每个Stock
的价格收集:
public class Stock
{
private readonly IList<Price> _prices = new List<Price>();
public string Symbol { get; set; }
public string Name { get; set; }
public IList<Price> Prices
{
get { return _prices; }
}
}
我选择了通用IList
来保持简单。还有其他收集对象可供选择,但这应该足以满足您的需求。要获取每个都有Stock
个空对象列表的Price
个对象列表,您只需构建新的IList<Stock>
:
IList<Stock> stocks = new List<Stock>();
然后使用Stock
集合的新增内容创建并添加Prices
个对象:
var appleStock = new Stock { Name = "Apple", Symbol = "APPL" };
appleStock.Prices.Add(new Price { Date = new DateTime(8, 23, 2011), Price = 199.43 });
appleStock.Prices.Add(new Price { Date = new DateTime(8, 25, 2011), Price = 206.28 });
stocks.Add(appleStock);
var googleStock = new Stock { Name = "Google", Symbol = "GOOG" };
googleStock.Prices.Add(/* same as above */);
stocks.Add(googleStock);
一直持续到你建立Stock
的列表为止。我已经对数据的来源做了一些基本的假设,所以你的实际代码可能会有很大差异,但我希望这能让你开始。
答案 3 :(得分:0)
class Price
{
DateTime priceTime;
Double price;
}
class Quote
{
String symbol;
String stockName;
Price[] priceCollection;
}
List<Quote> myQuote = new List<Quote>();