在方法中声明一个 c# 列表
Declaring a c# list inside method
我正在尝试将 Fortran 77 代码复制到 C#。
这是导致问题的行(至少我认为):
real acl,c(0:10)
如何在 C# 中的某些方法下声明这个新的 c
列表?
像这样:
float acl;
float[] c = new float[0:10];
?
感谢您的回复。
你在这里:
float[] c = new float[11];
MSDN Arrays Tutorial 是有用的参考。
希望对您有所帮助。
您的标题表明您可能会混淆 list
和 array
。我相信您是在问如何将 FORTRAN 数组转换为 C# 数组。
您正在转换的 FORTRAN 变量是数组,而不是列表。它们将永远是数组。 FORTRAN 中没有列表,除非您自己编写它们。
我的阅读和测试表明 C# 不支持选择您自己的数组索引下限。换句话说:下限始终为零。 C# 中的数组索引始终为 zero-based。所以你不能直接翻译 FORTRAN 数组,除非它们的 lower-bound 已经是零。
以你为例:
float[] c = new float[1:7];
因为 lower-bound 是 1,而不是零,你必须 shift-down 任何索引为 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# 中使用 bounds-specifiers 分配一个数组,例如 float[1:7]
并得到一个编译器错误,表明它不期望 lower-bound.
正如 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。一直希望其他语言也有声明数组底端的功能,在做数学建模的时候发现很有用
我正在尝试将 Fortran 77 代码复制到 C#。 这是导致问题的行(至少我认为):
real acl,c(0:10)
如何在 C# 中的某些方法下声明这个新的 c
列表?
像这样:
float acl;
float[] c = new float[0:10];
?
感谢您的回复。
你在这里:
float[] c = new float[11];
MSDN Arrays Tutorial 是有用的参考。
希望对您有所帮助。
您的标题表明您可能会混淆 list
和 array
。我相信您是在问如何将 FORTRAN 数组转换为 C# 数组。
您正在转换的 FORTRAN 变量是数组,而不是列表。它们将永远是数组。 FORTRAN 中没有列表,除非您自己编写它们。
我的阅读和测试表明 C# 不支持选择您自己的数组索引下限。换句话说:下限始终为零。 C# 中的数组索引始终为 zero-based。所以你不能直接翻译 FORTRAN 数组,除非它们的 lower-bound 已经是零。
以你为例:
float[] c = new float[1:7];
因为 lower-bound 是 1,而不是零,你必须 shift-down 任何索引为 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# 中使用 bounds-specifiers 分配一个数组,例如 float[1:7]
并得到一个编译器错误,表明它不期望 lower-bound.
正如 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。一直希望其他语言也有声明数组底端的功能,在做数学建模的时候发现很有用