Глобальное объявление и использование массива объектов C#

#c# #arrays #visual-studio #global

#c# #массивы #visual-studio #глобальный

Вопрос:

; Ожидается при (около «}» ) proc = { новый процесс (i, bts[i], 1) };

Я не знаю, как это исправить. Я думаю, что это какая-то синтаксическая проблема

 //code starts  
Process[] proc = new Process[3];

public void prentry()
{
    int[] bts = new int[999];
    for (int i = 1; i <= n; i  )
    {
        string txtid = "TextBox"   i;
        // MessageBox.Show();
        bts[i] = Convert.ToInt32(((TextBox)(this.Controls[(txtid)])).Text);
        proc = { new Process(i, bts[i], 1) }; //problem here                
    }
    GFG.findavgTime(proc, proc.Length);
  

Комментарии:

1. Синтаксис = { ... } допускается только при объявлении массива. Если вы хотите переназначить переменную массива позже, вам придется использовать одну из двух следующих форм: = new[] { ... } (только если тип различим по содержимому инициализатора массива) или = new Process[] { ... } .

2. Что именно вы пытаетесь сделать? proc это массив, вы хотите присвоить одному из его элементов или заменить весь массив?

Ответ №1:

Это обычная проблема при изучении этого нового синтаксиса для инициализации массивов. Можно легко ошибиться в следующих двух, чтобы сделать одно и то же, и оба работают:

 int[] a = { 1, 2, 3 };
  

и

 int[] a;
a = { 1, 2, 3 };
  

но, к сожалению, это не так. = { elements } Синтаксис разрешен только при объявлении переменной.

Вместо этого у вас есть две альтернативы, и здесь я перейду к вашему примеру:

 proc = new[] { ... elements ... };
proc = new Process[] { ... elements ... };
  

Вы можете удалить Process часть, если компилятор способен понять, что вы создаете массив Process объектов, что он может в вашем случае.


Теперь, сказав все это, это объясняет только ошибку компилятора.

Я предполагаю, что вы не хотите, чтобы он вел себя подобным образом. Вы объявили и инициализировали proc массив, содержащий 999 элементов, вероятно, вы не хотите переназначать весь массив на каждой итерации вашего цикла.

В принципе, я думаю, вы хотите этого:

 proc[i] = new Process(i, bts[i], 1);
  

(или некоторая вариация этого). Это позволило бы назначить новый Process объект одному из существующих элементов массива из 999 элементов.

Ответ №2:

Вероятно, сработает следующее

 proc = new [] {new Process(i, bts[i], 1)} ;
  

Одномерные массивы (руководство по программированию на C #)

Комментарии:

1. Но proc это массив