c#新数组.带构造函数的类

本文关键字:构造函数 数组 新数组 | 更新日期: 2023-09-27 18:09:37

我在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循环内的值,但我很想知道是否有一种方法!

c#新数组.带构造函数的类

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);
}

这样就可以在不使用for循环的情况下将对象放入数组中:

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

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

public KeyboardInput(string buttonName = "defaultButtonName", KeyCode button = KeyCode.A)
{
  name = buttonName;
  btn = button;
}
  KeyboardInput[] array = new KeyboardInput[]
  {
    new KeyboardInput("a",b),
    new KeyboardInput("a", b),
    new KeyboardInput("a", b)
  }