C# c语言中字典的重载多值构造函数#

C# c语言中字典的重载多值构造函数#,c#,dictionary,constructor,operator-overloading,C#,Dictionary,Constructor,Operator Overloading,我在C#工作,我不太确定这个问题怎么说(这使得搜索很困难)。基本上,我有一个从字典继承的类,其中MyButton是我创建的类。但是,我想覆盖Add函数,以防止添加不符合特定要求的键值对(例如,字典中的所有MyButton值都具有相同的大小属性)。我知道如何使用New操作符覆盖Add函数,但是我不确定如何覆盖允许这样做的Dictionary类的构造函数,例如: Dictionary<string, int> d = new Dictionary<string, int&g

我在C#工作,我不太确定这个问题怎么说(这使得搜索很困难)。基本上,我有一个从
字典
继承的类,其中
MyButton
是我创建的类。但是,我想覆盖Add函数,以防止添加不符合特定要求的键值对(例如,字典中的所有MyButton值都具有相同的大小属性)。我知道如何使用
New
操作符覆盖Add函数,但是我不确定如何覆盖允许这样做的Dictionary类的构造函数,例如:

    Dictionary<string, int> d = new Dictionary<string, int>()
    {
        {"cat", 2},
        {"dog", 1},
        {"llama", 0},
        {"iguana", -1}
    };
Dictionary d=newdictionary()
{
{“猫”,2},
{“狗”,1},
{“骆驼”,0},
{“鬣蜥”,-1}
};

我不确定哪个构造函数允许您执行上述操作。我相信是的,但我不知道如何覆盖它,甚至不知道如何制作一个

任何帮助都将不胜感激


谢谢

您提供的代码示例使用对象初始化器。这就是所谓的编译器“sugar”,也就是说,它是一种速记语法,可以扩展为与之相当的长文语法。在这种情况下,它是以下内容的简写:

Dictionary<string, int> d = new Dictionary<string, int>();
d.Add("cat", 2);
d.Add("dog", 10);
d.Add("llama", 0);
d.Add("iguana", -1);
Dictionary d=newdictionary();
d、 添加(“类别”,2);
d、 加上(“狗”,10);
d、 添加(“骆驼”,0);
d、 添加(“鬣蜥”,-1);
因此,在本例中使用的是dictionary的no-arg构造函数

另外,使用
new
关键字隐藏超类方法,而不是覆盖它。我不推荐。见这一相关问题:


看看课堂。它被用作键vaue集合的基类。然后您可以覆盖受保护的方法InsertItem、RemoveItem、ClearItems和SetItem来添加自定义逻辑。这些方法由Add、Remove和Clear方法调用。请看第二个示例。

这是字典的集合初始值设定项-它不是构造函数,而是初始值设定项,我认为您无法编写自己的集合初始值设定项。