多次调用相同的函数会给我一个错误

时间:2017-11-30 14:14:46

标签: c# for-loop

我用c#编程。我编写了一个生成随机imei的方法,它有15个从0到9的数字。我使用StringBuilder将它们组合在一起,并将整个代码作为字符串返回。

public static string randomIMEIgenerator()
{
    var builder = new StringBuilder();
    while (builder.Length < 15)
    {
        builder.Append(Rnd.Next(10).ToString());
    }
    return builder.ToString();
}

现在问题是我想运行这个方法x次,因为我想生成x imei代码。为什么当我写for循环时我得到这个错误?

  

非静态字段,方法或者需要对象引用   属性

我的主要职能:

private static readonly Random Rnd = new Random();
int x = 5;
public static void Main(string[] args)
{
    for (int i = 0; i < x; i++)
    {
        randomIMEIgenerator();
    }
}

我还想将所有随机生成的imei存储到一个数组中。我应该这样做吗?

String[] array = new String[x];
for (int i = 0; i < x; i++)
{
    array = randomIMEIgenerator();
}

然而,我的主要问题是关于这个错误。

P.S。如果我只运行一次,它会生成一个imei号码。因此randomIMEIgenerator方法正常工作。

2 个答案:

答案 0 :(得分:2)

你的'x'变量是从静态方法调用的,所以它也应该是静态的

 private static int x = 5;

要将所有这些imeis存储在数组中,请添加要在其中存储变量的索引:

String[] array = new String[x]; 
for (int i = 0; i < x; i++) {
    array[i] = randomIMEIgenerator(); 
}

作为旁注:您生成IMEI号码。 imei号码应以校验位结尾,使用Luhn Algorithm

计算

答案 1 :(得分:1)

正如Fortega所说,如果在主方法之外定义,int x必须是静态的。 我还建议将RNG作为参数传递给函数,而不是依赖于静态变量。

要分配给数组,请传递正确的数组索引。

String[] array = new String[x];
for (int i = 0; i < x; i++) {
    array[i] = randomIMEIgenerator();
    //    ^
}

C# fiddle for this example