#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)} ;
Комментарии:
1. Но
proc
это массив