Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为数组赋值_C#_Arrays - Fatal编程技术网

C# 为数组赋值

C# 为数组赋值,c#,arrays,C#,Arrays,我试图将值放入数组中,但当我编译代码时,它告诉我这两个数组从未被赋值,并且它们的值都设置为null。有人能看一下代码,告诉我我做错了什么吗 class SinusoidalWaveform { double[] angleArray; double[] resultArray; public SinusoidalWaveform(double minAngle, double maxAngle, int size) { int c = 0;

我试图将值放入数组中,但当我编译代码时,它告诉我这两个数组从未被赋值,并且它们的值都设置为null。有人能看一下代码,告诉我我做错了什么吗

class SinusoidalWaveform
{
    double[] angleArray;
    double[] resultArray;

    public SinusoidalWaveform(double minAngle, double maxAngle, int size)
    {
        int c = 0;

        for(double temp = minAngle; temp <= maxAngle; temp+=maxAngle/(size - 1d))
        {
          this.angleArray[c] = temp;
          this.resultArray[c] = Math.Sin(temp);
          c++;
        }
    }
}
类正弦波
{
双角度阵列;
双[]结果射线;
公共正弦波形(双角度、双最大角度、整数大小)
{
int c=0;

对于(double temp=minAngle;temp,您需要为两个阵列分配内存:

double[] angleArray = new double[5];
double[] resultArray = new double[5];
在构造函数中或在声明中这样做。5在本例中表示为该数组在内存中分配的元素数量

for(double temp = minAngle; temp <= maxAngle; temp+=maxAngle/(size - 1d))
{
          this.angleArray[c] = temp;
          this.resultArray[c] = Math.Sin(temp);
          c++; 
}

for(double temp=minAngle;temp您需要为两个阵列分配内存:

double[] angleArray = new double[5];
double[] resultArray = new double[5];
在构造函数中或在声明中这样做。5在本例中表示为该数组在内存中分配的元素数量

for(double temp = minAngle; temp <= maxAngle; temp+=maxAngle/(size - 1d))
{
          this.angleArray[c] = temp;
          this.resultArray[c] = Math.Sin(temp);
          c++; 
}

for(double-temp=minAngle;temp两个数组实际上都没有分配

试试这个:

class SinusoidalWaveform
{

    double[] angleArray = new double[MAX_SIZE];
    double[] resultArray  = new double[MAX_SIZE];
    .....
其中MAX_SIZE是数组的大小。
如果您不确定最大大小是多少,请考虑使用一个,例如。

两个数组实际上都没有分配

试试这个:

class SinusoidalWaveform
{

    double[] angleArray = new double[MAX_SIZE];
    double[] resultArray  = new double[MAX_SIZE];
    .....
其中MAX_SIZE是数组的大小。
如果不确定最大大小,请考虑使用,例如。

在启动循环之前,使用用户指定的大小实例化数组,如下所示:

angleArray = new double[size];
resultArray = new double[size];

数组是C#中的对象。在使用它们之前必须实例化。

在启动循环之前,请使用用户指定的大小实例化数组,如下所示:

angleArray = new double[size];
resultArray = new double[size];

数组是C#中的对象。它们必须在使用之前实例化。

看起来在运行循环之前您不知道数组大小,所以最简单的解决方案是使用通用列表,然后在循环后分配数组:

List<double> angleList = new List<double>();
List<double> resultList= new List<double>();
for(double temp = minAngle; temp <= maxAngle; temp+=maxAngle/(size - 1d))
{
   angleList.Add(temp);
   resultList.Add(Math.Sin(temp));
}
this.angleArray = angleList.ToArray();
this.resultArray= resultList.ToArray();
List angleList=新列表();
列表结果列表=新列表();

for(double temp=minAngle;temp看起来在运行循环之前您不知道数组大小,因此最简单的解决方案是使用通用列表,然后在循环之后分配数组:

List<double> angleList = new List<double>();
List<double> resultList= new List<double>();
for(double temp = minAngle; temp <= maxAngle; temp+=maxAngle/(size - 1d))
{
   angleList.Add(temp);
   resultList.Add(Math.Sin(temp));
}
this.angleArray = angleList.ToArray();
this.resultArray= resultList.ToArray();
List angleList=新列表();
列表结果列表=新列表();

对于(double temp=minAngle;temp,它实际上告诉您这一点,因为您没有分配数组

double[] angleArray;
double[] resultArray;
如果要为这两个数组赋值,可以尝试以下方法之一

1 |如果您想在一个步骤中分配值,那么您可以尝试以下操作

double[] angleArray = { 1, 2, 3 };
double[] resultArray = { 4, 5, 6 };
然后,您可以使用以下代码访问其值,例如

int n = 1;
angleArray[n] = 1; //Set (2) to (1)
double[] angleArray = new double[3];
int o = 0;
for (int i = 0; i < angleArray.Length; i++)
{
     angleArray[i] = o;
     o++;
}
其中n是数组中项目的索引。通常,在数组中,第一个项目的索引
0
,而不是
1
。因此,如果您说
angelarray[1]
,它将输出
2

2 | |如果要将数组最大值设置为特定值,请分两步分配值

double[] angleArray = new double[3];
double[] resultArrau = new double[3];
虽然这将分配值,但值仍然未知,因为当您说

double[] angleArray = new double[3];
您正在告诉程序您希望分配3个值,但现在不会指示这些值

在这种情况下,您可以使用以下代码指示值,例如

int n = 1;
angleArray[n] = 1; //Set (2) to (1)
double[] angleArray = new double[3];
int o = 0;
for (int i = 0; i < angleArray.Length; i++)
{
     angleArray[i] = o;
     o++;
}
double[]angelarray=新的双精度[3];
INTO=0;
对于(int i=0;i
这将为
循环分配一个
o
值,每个
循环将增加
1
。您可能会注意到,我没有说
I
,因为数组中的索引以
0
开始,而不是
1

重要提示:如果您有一个最多6个值的数组集
double[]\u array=new double[6];
,则不能设置索引
7
\u array[7]=1;
)的值,因为您只有
6
索引。否则,您将得到
索引自动异常未处理

谢谢,

我希望这对您有所帮助:)

它实际上告诉您这一点,因为您没有分配数组

double[] angleArray;
double[] resultArray;
如果要为这两个数组赋值,可以尝试以下方法之一

1 |如果您想在一个步骤中分配值,那么您可以尝试以下操作

double[] angleArray = { 1, 2, 3 };
double[] resultArray = { 4, 5, 6 };
然后,您可以使用以下代码访问其值,例如

int n = 1;
angleArray[n] = 1; //Set (2) to (1)
double[] angleArray = new double[3];
int o = 0;
for (int i = 0; i < angleArray.Length; i++)
{
     angleArray[i] = o;
     o++;
}
其中n是数组中项目的索引。通常,在数组中,第一个项目的索引
0
,而不是
1
。因此,如果您说
angelarray[1]
,它将输出
2

2 | |如果要将数组最大值设置为特定值,请分两步分配值

double[] angleArray = new double[3];
double[] resultArrau = new double[3];
虽然这将分配值,但值仍然未知,因为当您说

double[] angleArray = new double[3];
您正在告诉程序您希望分配3个值,但现在不会指示这些值

在这种情况下,您可以使用以下代码指示值,例如

int n = 1;
angleArray[n] = 1; //Set (2) to (1)
double[] angleArray = new double[3];
int o = 0;
for (int i = 0; i < angleArray.Length; i++)
{
     angleArray[i] = o;
     o++;
}
double[]angelarray=新的双精度[3];
INTO=0;
对于(int i=0;i
这将为
循环分配一个
o
值,每个
循环将增加
1
。您可能会注意到,我没有说
I
,因为数组中的索引以
0
开始,而不是
1

重要提示:如果您有一个最多6个值的数组集
double[]\u array=new double[6];
,则不能设置索引
7
\u array[7]=1;
)的值,因为您只有
6
索引。否则,您将得到
索引自动异常未处理

谢谢, 我希望你发现这有帮助:

这是C语言还是C++?它们是完全不同的语言?@ USER 1781027?