C# 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
字典
继承的类,其中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方法调用。请看第二个示例。这是字典的集合初始值设定项-它不是构造函数,而是初始值设定项,我认为您无法编写自己的集合初始值设定项。