C# 中的可变长度数组
本文关键字:数组 | 更新日期: 2023-09-27 18:31:50
我有一个类,它定义了几个全局变量,如下所示:
namespace Algo
{
public static class AlgorithmParameters
{
public int pop_size = 100;
}
}
在我的另一个 csharp 文件中,该文件也包含 main(),而在 main() 中,我声明了一个类型结构的数组,数组大小为 pop_size 但我在"chromo_typ Population[AlgorithmParameters.pop_size];"
上遇到了一些错误。请在下面找到代码。我是否对可变长度大小的数组声明使用了不正确的语法?
namespace Algo
{
class Program
{
struct chromo_typ
{
string bits;
float fitness;
chromo_typ() {
bits = "";
fitness = 0.0f;
}
chromo_typ(string bts, float ftns)
{
bits = bts;
fitness = ftns;
}
};
static void Main(string[] args)
{
while (true)
{
chromo_typ Population[AlgorithmParameters.pop_size];
}
}
}
}
错误是:
Bad array declarator: To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type.
Array size cannot be specified in a variable declaration (try initializing with a 'new' expression)
请帮忙。
声明
变量时无需指定大小,而是在创建数组实例时指定大小:
chromo_typ[] Population = new chromo_typ[AlgorithmParameters.pop_size];
或者,如果将声明和创建分开:
chromo_typ[] Population;
Population = new chromo_typ[AlgorithmParameters.pop_size];
以这种方式更改初始化:
//while (true) ///??? what is the reason for this infinite loop ???
//{
chromo_typ[] Population = new chrom_typ[AlgorithmParameters.pop_size] ;
//}
此外,您还需要将pop_size更改为静态,因为它是在静态类中声明的。
不知道为什么你必须使用一段时间(真的)
但无论如何,要声明数组,您必须这样做:
chromo_typ[] Population = new chromo_typ[AlgorithmParameters.pop_size];
并且还必须在算法参数中将成员pop_size声明为静态
public static class AlgorithmParameters
{
public static int pop_size = 100;
}
尝试更改初始化语句如下,它将创建一个实例
chromo_typ[] Population = new chrom_typ[AlgorithmParameters.pop_size] ;