2016-06-26 1 views
1

Я пытаюсь передать массив двойников в mehtod в другом классе, который будет выполнять некоторые вычисления и возвращать еще один массив двойников.Ошибка при вызове метода из другого класса при отправке массива удвоений

Вот как я сейчас его вычисляю.

private void btnCalcLGM_Click(object sender, EventArgs e) 
    {  
     public double[] myInputArray = {455.0,400.0,300.0,200.0,100.0}; 
     LogisticGrowthDCA prodArray = new LogisticGrowthDCA (myInputArray); 
    } 

И вот класс и метод, которые я пытаюсь назвать.

public class LogisticGrowthDCA 
{ 
    private double defaultK = 500000; 
    private double defaultA = 50; 
    private double defaultN = .5; 

    public double[] myArray; 

    public LogisticGrowthDCA(double[] myInputArray) 
    {    
     for (int i = 0; i< myInputArray.Length; i++) 
     { 
      myArray[i] = myInputArray[i]; //do some calculation 
      return myArray; 
     } 
    } 
} 

Это говорит, что я получаю сообщение об ошибке, как: «Поле инициализатор не может ссылаться на нестатическое поле, метод или свойство 'DataAccessProject.Form1.myInputArray»

Как вернуть массив из моего метода и почему я не могу передать массив в метод?

+0

Доступ, указанный в событии нажатия кнопки ... public double [] ... Выглядит подозрительно. Попробуйте удалить это –

+0

Спасибо, я переместил его за пределы события нажатия кнопки. –

ответ

1

Вы не можете объявить переменную с модификатором доступа внутри метода. т.е.public

double[] myInputArray = {455.0,400.0,300.0,200.0,100.0}; 

Кроме, Вы ничего не можете вернуться при создании объекта. (При использовании конструктора).

public LogisticGrowthDCA(double[] myInputArray) 
{    
    for (int i = 0; i< myInputArray.Length; i++) 
    { 
     myArray[i] = myInputArray[i]; //do some calculation 
    } 
} 
0

Есть несколько ошибок в коде, как показано ниже

первым вы не можете иметь модификатор доступа, как public/private/protected для локального переменного метода. Более того, объявление их как общедоступных не будет иметь смысла в их объеме, ограниченном в блоке метода.

public double[] myInputArray = {455.0,400.0,300.0,200.0,100.0}; 

Второй в своем классе LogisticGrowthDCA конструкторе вы пытаетесь вернуть массив (как указано ниже), который не является возможной причиной конструктор предназначены для инициализации поля и так ничего не возвращают и вид void типа всегда по умолчанию.

public LogisticGrowthDCA(double[] myInputArray) 
{    
    for (int i = 0; i< myInputArray.Length; i++) 
    { 
     myArray[i] = myInputArray[i]; //do some calculation 
     return myArray; <-- HERE 
    } 
} 

Читайте о Constructor in C# Programming для получения дополнительной информации.

+0

Я добавил тип возвращаемого значения в конструктор и переместил оператор return под кодом кода цикла цикла. Я все еще не храню ничего в prodArray в методе btnCalcLGM_Click. Что я не понимаю? –

+0

@dont_break_the_chain, вы не понимаете, что вы не можете иметь оператор return в конструкторе. Прочитайте о конструкторе https://msdn.microsoft.com/en-IN/library/ace5hbzh.aspx – Rahul

Смежные вопросы