C#新数组。具有构造函数的类

时间:2016-09-29 18:44:07

标签: c# arrays class constructor instance

我在Unity工作,但我想这同样适用于C#。

这是我制作的课程:

    public class KeyboardInput
    {
        private string name;
        private KeyCode btn;

        public KeyboardInput(string buttonName, KeyCode button)
        {
            name = buttonName;
            btn = button;
        }
    }

当我创建类的实例时,如果我没有指定构造函数所需的值,我将收到错误。

现在我想创建一个类的数组,我想指定值,但是如何?

在没有指定值

的情况下,这似乎工作正常
    public class InputController
    {
        private KeyboardInput[] defaultKeyBinding = new KeyboardInput[4];

        public InputController()
        {
            for (int i = 0; i < defaultKeyBinding.Length; i++)
            {
                //Something inside here
            }
        }
    }

我可以调整代码以便能够在for循环中设置值,但我很想知道是否有办法!

3 个答案:

答案 0 :(得分:1)

该行

private KeyboardInput[] defaultKeyBinding = new KeyboardInput[4];

只是声明一个数组,没有任何东西被初始化。在你的循环中,你可能想要这样的东西。

for (int i = 0; i < defaultKeyBinding.Length; i++)
{
    //should look something like this
    defaultKeyBinding[i] = new KeyboardInput("Ayy", KeyCode.A);
}

答案 1 :(得分:0)

这样的东西可以让你在不使用for循环的情况下将对象放在数组中:

KeyboardInput[] defaultKeyBinding = new KeyboardInput[4];
defaultKeyBinding[0] = new KeyboardInput("someName", KeyCode.A);
defaultKeyBinding[1] = new KeyboardInput("someName2", KeyCode.B);

但是,为避免在未在构造函数中指定参数值时发生错误,可以使用可选值。请参阅this page上的示例。在你的情况下,我不知道为这些参数分配默认值是否有意义,但它看起来像这样:

public KeyboardInput(string buttonName = "defaultButtonName", KeyCode button = KeyCode.A)
{
  name = buttonName;
  btn = button;
}

答案 2 :(得分:0)

  KeyboardInput[] array = new KeyboardInput[]
  {
    new KeyboardInput("a",b),
    new KeyboardInput("a", b),
    new KeyboardInput("a", b)
  }