在方法内声明一个c#列表

时间:2015-07-05 01:20:51

标签: c# list fortran declaration fortran77

我正在尝试将fortran 77代码复制到C#。 这是造成麻烦的一条线(至少我认为):

real acl,c(0:10)

如何在C#中的某些方法下声明这个新的c列表? 像这样:

float acl;
float[] c = new float[0:10];

感谢您的回复。

3 个答案:

答案 0 :(得分:5)

你在这里:

float[] c = new float[11];

MSDN Arrays Tutorial是一个有用的参考。

希望得到这个帮助。

答案 1 :(得分:3)

您的标题表明您可能会将listarray混淆。我相信你在问如何 FORTRAN数组转换为C#数组。

您要转换的FORTRAN变量是数组,而不是列表。它们永远是数组。 FORTRAN中没有列表,除非您自己编写代码。

我的阅读和测试表明C#不支持选择自己的数组索引下限。换句话说:下限始终为零。 C#中的数组索引始终是从零开始的。所以你不能直接翻译FORTRAN数组,除非它们的下限已经为零。

举个例子:

float[] c = new float[1:7];

由于下限是1,而不是零,因此必须将任何索引向下移1。

您的示例数组需要包含7个元素,因此请在C#中将其声明为:

float[] c = new float[7];

这些元素的寻址或索引将是:

float[0] = 10.5f;  // the first element
float[1] = ...     // the second element
float[6] = ...     // the last element
float[7] =         // runtime error: array index out of bounds

因此,您需要在C#代码中偏移索引以适应转换。

P.S。作为一个实验,我尝试在C#中使用诸如float[1:7]之类的边界指定符分配一个数组,并得到一个编译器错误,表明它不期望​​下限。

答案 2 :(得分:1)

正如hungndv写的float[] c = new float[11];将是这个数组的正确声明。

real acl,c(0:10)声明一个真实变量和一个真实数组。在这种情况下,它指定一个包含11个元素的数组,这些元素以0开头并以元素10结束。默认情况下,在Fortran 77中,数组是基于1的,但它们可以选择从零或负数开始。例如:

real d(-10:10,-100:100)将声明一个二维数组,其中x元素为-10,y元素为-100。我总是希望其他语言能够声明数组的底部,我发现它在进行数学建模时非常有用。