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;
    }
}