-2

我有以下课程:

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?

4

5 回答 5

2

您可以创建一个构造函数,该构造函数获取索引的值并将其分配给变量。

public STElement(int index)
{
  _value = 0;
  _next = null;
  _index = index;
}

这不会强制对象是唯一具有此类0索引的对象 - 这不是对象可以直接执行的操作。

public注意样式 - 拥有字段不是好习惯。您应该使用属性来公开它们。

于 2012-12-13T14:45:01.333 回答
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();
于 2012-12-13T14:44:23.733 回答
1

STElement st1 = 新 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;
  }
}
于 2012-12-13T14:44:56.897 回答
1

为什么不将所需的索引传递给构造函数?

您可以使用默认参数创建构造函数,而不必像这样更改对其进行的其他调用:

public STElement(int index = 0)
{
  _value = 0;
  _next = null;
  _index = index;
}

这样,所有未传递索引的实例都将获得默认值,而对于其他实例,您可以指定所需的某个索引。或者你可以反过来做,将默认值设置为不同于 0 的值,并且只有你想要的,你可以调用 index = 0 的构造函数。

于 2012-12-13T14:46:25.407 回答
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;
  }

...

于 2012-12-13T14:45:43.910 回答