繁体   English   中英

具有通用C#词典的加法(即+)扩展方法

[英]Addition (i.e. +) extension method with a generic C# Dictionary

我正在尝试编写像这样的通用Dictionary扩展方法。 TValue始终为int,但TKey可以为字符串或DateTime。

public static void AddOrIncrement<TKey, TValue>(this Dictionary<TKey, TValue> dict, TKey key, TValue value) 
{
    if (!dict.ContainsKey(key))
    {
        dict.Add(key, value);
    }
    else
    {
        dict[key] += value;
    }
}

但这不会编译-运算符'+ ='不能应用于类型'TValue'和'TValue'的操作数。

因此,我尝试:

public static void AddOrIncrement<TKey, TValue>(this Dictionary<TKey, TValue> dict, TKey key, TValue value) where TValue : int

但这也不编译。 因此,我尝试了:

public static void AddOrIncrement<TKey, int>(this Dictionary<TKey, int> dict, TKey key, int value)

无法编译-“类型参数声明必须是标识符而不是类型”

尝试:

public static void AddOrIncrement<TKey>(this Dictionary<TKey, int> dict, TKey key, int value)

您正在尝试制作仅采用一个通用参数的扩展方法:

public static void AddOrIncrement<TKey>(this Dictionary<TKey, int> dict, TKey key, int value)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM