C# C存储长类型的快捷方式?
我有一本类型为:C# C存储长类型的快捷方式?,c#,C#,我有一本类型为: Dictionary<(string, string), List<(decimal amount, decimal price, long timestampUnixEpoch)>> 例如: 我将对这种类型的对象进行一些拆箱和装箱,因此需要对其进行强制转换。我发现简单地将其铸造成这样会占用太多的空间,例如: (Dictionary<(string, string), List<(decimal amount, decimal price,
Dictionary<(string, string), List<(decimal amount, decimal price, long timestampUnixEpoch)>>
例如:
我将对这种类型的对象进行一些拆箱和装箱,因此需要对其进行强制转换。我发现简单地将其铸造成这样会占用太多的空间,例如:
(Dictionary<(string, string), List<(decimal amount, decimal price, long timestampUnixEpoch)>>) boxedObject //unbox cast
我是否可以使用较短的变量引用该类型?我尝试过使用这个类型,但我不确定这个是否可以用于该类型。对于此类型和任何其他长的类型有什么建议吗?您可以使用:
然后你可以用字典来代替。这是一个好迹象,你应该停止使用元组,创建你自己的结构。
(Dictionary<(string, string), List<(decimal amount, decimal price, long timestampUnixEpoch)>>) boxedObject //unbox cast
using MyDict = System.Collections.Generic.Dictionary<(string, string), System.Collections.Generic.List<(decimal amount, decimal price, long timestampUnixEpoch)>>;
// give these structs better names if you can
struct StringPair {
public string Item1 { get; }
public string Item2 { get; }
public StringPair(string item1, string item2) {
Item1 = item1;
Item2 = item2;
}
public override bool Equals(object obj)
{
if (obj == null)
{
return false;
}
if (GetType() != obj.GetType())
{
return false;
}
var pair = (StringPair)obj;
return Item1 == pair.Item1 && Item2 == pair.Item2;
}
// remember to implement Equals and GetHashCode!
public override int GetHashCode() {
return HashCode.Combine(Item1, Item2);
}
}
struct Item {
public decimal Amount { get; }
public decimal Price { get; }
public long TimestampUnixEpoch { get; }
public Item(decimal amount, decimal price, long timestampUnixEpoch) {
Amount = amount;
Price = price;
TimestampUnixEpoch = timestampUnixEpoch;
}
}