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

时间:2019-04-23 20:50:12

标签: c# arrays visual-studio global

  

;预期在(“}”附近)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);

2 个答案:

答案 0 :(得分: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 :(得分:1)

以下内容可能会起作用

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

Single-Dimensional Arrays (C# Programming Guide)