0

我有一个类型的字典:

Dictionary<(string, string), List<(decimal amount, decimal price, long timestampUnixEpoch)>>

例如:

Dictionary<(string, string), List<(decimal amount, decimal price, long timestampUnixEpoch)>> someDict;

我将对这种类型的对象进行一些拆箱和装箱,因此需要对其进行转换。我发现简单地将其转换为每行占用太多空间,例如:

(Dictionary<(string, string), List<(decimal amount, decimal price, long timestampUnixEpoch)>>) boxedObject //unbox cast

我可以使用更短的变量来引用类型吗?我尝试使用 Type 类型,但我不确定这是否可以用于此目的。对这个和其他任何长的类型有什么建议吗?

4

1 回答 1

1

您可以使用using alias 指令

using MyDict = System.Collections.Generic.Dictionary<(string, string), System.Collections.Generic.List<(decimal amount, decimal price, long timestampUnixEpoch)>>;

在顶部添加此行,您可以将MyDict其用作类型名称。

但实际上,这表明您正在滥用元组。你应该创建自己的结构,真的:

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

然后你可以Dictionary<StringPair, List<Item>>改用。

于 2019-12-29T06:28:46.620 回答