我有以下课程:
public class STElement
{
public int _value;
public STElement _next;
public int _index;
public STElement()
{
_value = 0;
_next = null;
_index = 0;
}
}
在程序的运行时我想创建一些像这样的对象:
_rootStack1 = new STElement();
_rootStack2 = new STElement();
_rootStack3 = new STElement();
但我只希望 _rootStack1 拥有 _index = 0;
那我该怎么做呢,三个对象中只有一个得到_index?
答案 0 :(得分:2)
您可以创建一个构造函数,该构造函数获取索引的值并将其分配给变量。
public STElement(int index)
{
_value = 0;
_next = null;
_index = index;
}
这不会强制该对象是唯一具有此类0
索引的对象 - 这不是对象可以直接执行的操作。
关于风格的注意事项 - 拥有public
字段不是一个好习惯。您应该使用属性来公开它们。
答案 1 :(得分:1)
public class STElement
{
public int _value;
public STElement _next;
public int _index;
public STElement()
{
_value = 0;
_next = null;
_index = 0;
}
public STElement(int index)
: this()
{
_index = index;
}
}
_rootStack1 = new STElement(1);
_rootStack2 = new STElement(2);
_rootStack3 = new STElement();
答案 2 :(得分:1)
STElement st1 = new STElement(1);
public class STElement
{
public int _value;
public STElement _next;
public int _index;
public STElement()
{
_value = 0;
_next = null;
_index = 0;
}
public STElement(int index)
{
_value = 0;
_next = null;
_index = index;
}
}
答案 3 :(得分:1)
为什么不将所需的索引传递给构造函数?
您可以使用默认参数创建一个构造函数,而不必像以下那样更改对其进行的其他调用:
public STElement(int index = 0)
{
_value = 0;
_next = null;
_index = index;
}
这样,所有未通过索引的实例都将获得默认值,而对于其他实例,您可以指定所需的特定索引。或者你可以反过来做,将默认值设置为不同于0的值,只有你想要的那个,你可以用index = 0来调用构造函数。
答案 4 :(得分:0)
您可以像方法一样重载构造函数。 类似这样:
public STElement()
{
_value = 0;
_next = null;
_index = 0;
}
public STElement(int param1)
{
_value = param1;
_next = null;
_index = 0;
}
public STElement(int param1, int param2):this()
{
_value = param1;
_next = null;
_index = param2;
}
...