Вопрос или проблема
Я начинаю с объявления private int[] intArray = new int[10];
в начале моего класса, что нормально; подразумевается, что это то же самое, что и private int[] intArray = {0,0,0,0,0,0,0,0,0,0};
.
Теперь, если я продолжу, объявив intArray[0] = 99;
, я получаю Ошибка CS1519: Неверный токен ‘=’ в объявлении члена класса… Я не понимаю эту ошибку.
Если я инициализирую (на самом деле обновлю, так как он был обнулен во время создания) это единственное значение, объявив intArray[0] = 99;
в начале Update()
, то все будет в порядке; или если я сделаю явную инициализацию в начале моего класса с private int[] intArray = {99,0,0,0,0,0,0,0,0,0};
, тоже будет все в порядке.
Так что мой вопрос: что я упускаю, что не могу изменить intArray[0]
из его значения по умолчанию, равного нулю, вне Update()
? Я явно неправильно что-то понимаю. Например, в Инициализация только некоторых значений массива c#? это считается именно правильным способом инициализации некоторых элементов массива.
Ответ или решение
Ошибка, с которой вы столкнулись, связана с особенностями инициализации переменных в классе на языке C#. Давайте подробно разберем вашу ситуацию.
Когда вы объявляете массив как private int[] intArray = new int[10];
, вы фактически создаете массив с 10 элементами, каждый из которых инициализируется значением 0 по умолчанию. Однако присвоение значений элементам массива не может происходить на уровне объявления в самом классе. Это объясняет, почему следующая строка:
intArray[0] = 99;
вызывает ошибку компиляции CS1519: Invalid token '=' in class member declaration
. Дело в том, что в C# нельзя выполнять операции присвоения значений переменным на уровне объявления членов класса. На этом уровне вы можете только объявлять или инициализировать переменные.
Правильное место для присвоения значений элементам массива — в конструкторе класса или в методах, таких как Update()
, которые вызываются после инициализации объектов.
Вот пример правильной реализации:
public class MyClass
{
private int[] intArray;
// Конструктор
public MyClass()
{
intArray = new int[10]; // Инициализация массива
intArray[0] = 99; // Теперь можно присвоить значение
}
// Метод Update
public void Update()
{
// Также можно изменять значения массива здесь
intArray[0] = 100; // Например, изменим значение на 100
}
}
Если вы хотите сразу инициализировать массив с некоторыми значениями, вы можете использовать инициализатор массива:
private int[] intArray = new int[] { 99, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
Таким образом, вы правильно инициализируете массив конкретными значениями, и это также будет работать без ошибок.
В заключение, основные моменты:
- Присвоение значений элементам массива нельзя выполнять на уровне объявления переменной класса.
- Для изменения значений в массиве используйте конструктор или методы класса.
Если у вас есть дополнительные вопросы, не стесняйтесь задавать их!