C# 在构造函数中初始化私有集合,重复还是使用链接?
我有一门课,像:C# 在构造函数中初始化私有集合,重复还是使用链接?,c#,C#,我有一门课,像: public class Something { private Dictionary<int,int> dic; public Something() { dic = new Dictionary<int,int>(); } public Something(Dictionary<int,int> a) { dic = new Dictionary<int,i
public class Something
{
private Dictionary<int,int> dic;
public Something()
{
dic = new Dictionary<int,int>();
}
public Something(Dictionary<int,int> a)
{
dic = new Dictionary<int,int>();
}
}
公共类
{
私人词典;
公开某事
{
dic=新字典();
}
公共物品(字典a)
{
dic=新字典();
}
}
如何避免两次初始化集合?调用this()
:
public Something()
{
dic=新字典();
}
公共某物(字典a):这个()
{
//用…做点什么??
}
请注意,默认情况下不会从其他构造函数调用“default”构造函数,因此您实际上不会两次初始化字典。调用this()
:
public Something()
{
dic=新字典();
}
公共某物(字典a):这个()
{
//用…做点什么??
}
请注意,默认情况下不会从其他构造函数调用“default”构造函数,因此您实际上没有两次初始化字典。我猜您正在寻找:
公共类
{
私人词典;
公开某事
:此(新词典())
{
}
公共物品(字典a)
{
dic=a;
}
}
我想您正在寻找:
公共类
{
私人词典;
公开某事
:此(新词典())
{
}
公共物品(字典a)
{
dic=a;
}
}
还有另一种选择:
public class Something
{
private Dictionary<int, int> dic;
private void Initialize()
{
dic = new Dictionary<int, int>();
}
public Something()
{
Initialize();
}
public Something(Dictionary<int, int> a)
{
Initialize();
// do something with a??
// Yes, you are not using the parameter "a".
// I don't know if this is intentional.
}
}
公共类
{
私人词典;
私有void初始化()
{
dic=新字典();
}
公开某事
{
初始化();
}
公共物品(字典a)
{
初始化();
//用…做点什么??
//是的,您没有使用参数“a”。
//我不知道这是否是故意的。
}
}
注意:这不适用于只读
字段
顺便说一句,尽你所能。编译器可以对其进行优化。还有另一种选择:
public class Something
{
private Dictionary<int, int> dic;
private void Initialize()
{
dic = new Dictionary<int, int>();
}
public Something()
{
Initialize();
}
public Something(Dictionary<int, int> a)
{
Initialize();
// do something with a??
// Yes, you are not using the parameter "a".
// I don't know if this is intentional.
}
}
公共类
{
私人词典;
私有void初始化()
{
dic=新字典();
}
公开某事
{
初始化();
}
公共物品(字典a)
{
初始化();
//用…做点什么??
//是的,您没有使用参数“a”。
//我不知道这是否是故意的。
}
}
注意:这不适用于只读
字段
顺便说一句,尽你所能。编译器可以对其进行优化。如果需要,可以将其链接,编译器可以将其内联。顺便说一句,你对参数“a”做什么?@Theraot参数a只是为了传达我的情况,我在我的真实代码中使用它。如果你愿意,你可以链接它,编译器可以内联它。顺便说一句,你对参数“a”做了什么?@Theraot参数a只是为了传达我的情况,我在我的真实代码中使用它。这和D Stanley的答案都很好。我认为这对于这种情况稍微好一点,因为它使用了良好的默认值,而不是多余的。在我看来,这也更具表现力。这和D斯坦利的回答都很好。我认为这对于这种情况稍微好一点,因为它使用了良好的默认值,而不是多余的。在我看来,它也更有表现力。
public class Something
{
private Dictionary<int, int> dic;
private void Initialize()
{
dic = new Dictionary<int, int>();
}
public Something()
{
Initialize();
}
public Something(Dictionary<int, int> a)
{
Initialize();
// do something with a??
// Yes, you are not using the parameter "a".
// I don't know if this is intentional.
}
}