对象的全局声明和用法数组C#

问题描述 投票:0回答:2

;预期在(接近“}”)proc = {new Process(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);
c# arrays visual-studio global
2个回答
2
投票

在学习这种用于初始化数组的新语法时,这是一个常见问题。人们可能很容易误认为以下两个做同样的事情,两者都有效:

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元素数组的现有元素之一。


1
投票

以下可能会奏效

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

Single-Dimensional Arrays (C# Programming Guide)

© www.soinside.com 2019 - 2024. All rights reserved.