我想保存对应不同基础货币的所有货币的汇率。什么是保存相同的最好和最有效的类型或结构。目前我正在使用
Dictionary<string, Dictionary<string, decimal>>();
提前致谢。请建议
答案 0 :(得分:0)
如果不是
,请不要发现您的方法存在严重问题1)在内存DB(redis之类)中使用一些自定义第三方。但是你的案子可能会显得过于简洁。
2)派生自你的类型
public class MyCustomHolder : Dictionary<string, Dictionary<string, decimal>> {
}
因此,请避免在代码中使用冗长且令人困惑的定义,并为其带来更多语义 你的代码阅读器和你自己。
答案 1 :(得分:0)
通常我会使用以下类的变体。
public ForexSpotContainer : IEnumerable<FxSpot>
{
[DataMember] private readonly Dictionary<string, FxSpot> _fxSpots;
public FxSpot this[string baseCurrency, string quoteCurrency]
{
get
{
var baseCurrencySpot = _fxSpots[baseCurrency];
var quoteCurrencySpot = _fxSpots[quoteCurrency];
return baseCurrencySpot.Invert()*quoteCurrencySpot;
}
}
public IEnumerator<FxSpot> GetEnumerator()
{
return _fxSpots.Values.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
然后我倾向于创建一个Money
类和一个FxSpot
类,然后为Money和FxSpot类创建+ - * /运算符,以便我可以安全地进行财务计算。
decimal sharePriceOfMsft = 40.30m;
decimal usdEur = 0.75m;
decimal msftInEur = sharePriceOfMsft * usdEur;
因为我总是需要几秒钟才能检查是否应该增加现场或分数。
当我必须使用外汇交叉(例如JPYEUR或EURJPY等)时,问题变得更加复杂,并且来自近距离外汇点的字幕错误会导致时间损失。
同样重要的是方程的维数分析。当你将多个数字组合在一起并且期望价格时,你确定你没有弄乱多重/分数。通过为每个单元创建一个新类,您可以进行更多的编译时错误检查,最终可以为您读取的每行代码节省几秒钟(在数千行库中,这将非常快地加起来)。