#c# #arrays #class #methods #constructor
#c# #массивы #класс #методы #конструктор
Вопрос:
Я хотел бы получить объяснение, что я делаю неправильно. Я вставляю два блока кодов; один работает, другой не работает. Первый код работает, потому что начальные значения передаются в метод «MyGreatMethod», я их вижу:
public class Something
{
private int [] MyArray = new int [3];
public Something()
{
MyArray[0] = 100;
MyArray[1] = 200;
MyArray[2] = 300;
}
public void MyGreatMethod()
{
Console.WriteLine(MyArray[0] / 3);
Console.WriteLine(MyArray[1] / 3);
Console.WriteLine(MyArray[2] / 3);
}
}
но если я помещаю значения в «myArray» таким образом (см. Ниже), метод «MyGreatMethod» получает нули из конструктора, что я делаю не так? Пожалуйста, помогите..
public class Something
{
private int [] MyArray = new int [3];
public Something()
{
int[] MyArray = {100,200,300};
}
public void MyGreatMethod()
{
Console.WriteLine(MyArray[0] / 3);
Console.WriteLine(MyArray[1] / 3);
Console.WriteLine(MyArray[2] / 3);
}
}
Комментарии:
1. Это локальная переменная. Попробуйте удалить int[]
2. Это потому, что во 2-м фрагменте вы инициализируете локальную переменную с именем
MyArray
вместо поля экземпляра с именемMyArray
Ответ №1:
Это null
потому, что вы не присвоили значения MyArray
. Вместо этого вы создали новый массив и присвоили его локальной переменной с тем же именем.
Вы должны удалить int[]
из конструктора:
public class Something
{
private int [] MyArray = new int [3];
public Something()
{
MyArray = {100,200,300};
}
public void MyGreatMethod()
{
Console.WriteLine(MyArray[0] / 3);
Console.WriteLine(MyArray[1] / 3);
Console.WriteLine(MyArray[2] / 3);
}
}
Ответ №2:
Вам нужно использовать ключевое слово new, когда вы хотите установить значения для определенного массива после объявления:
public class Something
{
private int[] MyArray;
public Something()
{
MyArray = new int[3] { 100, 200, 300 };
}
public void MyGreatMethod()
{
Console.WriteLine(MyArray[0] / 3);
Console.WriteLine(MyArray[1] / 3);
Console.WriteLine(MyArray[2] / 3);
}
}
Комментарии:
1. Спасибо! Это было так! Теперь это работает! Может спросить, когда следует использовать «это»