作用域有问题? "Object reference not set to an instance of an object "
Problem with scopes? "Object reference not set to an instance of an object "
我正在尝试构建 3D 光谱仪并获取给定时间点的大量频率数据。我需要对此进行简化,以便能够处理大量预制件的实例化。所以我使用固定数量的频率数据行来查看:
int spectrumRows = 24;
然后我调用此函数来“简化”频谱的细节,方法是将值相加,然后将它们的中值添加到名为“floatArray”的浮点数组中。然后将其传递给另一个浮点数组“simpleSpectrum”,它告诉我存在此引用错误。
public void addToSimpleSpectrum(float[] spectrum) {
float spectralsInRow = spectrum.Length / spectrumRows;
Math.Round(spectralsInRow);
float[] floatArray = new float[(int)spectralsInRow];
for(int i = 0; i < spectralsInRow; i++){
float median = 0f;
float sum = 0f;
for (float o = spectralsInRow*i; o < (spectralsInRow*(i+1)); o++) {
sum = sum + spectrum[(int)o];
}
median = sum / spectralsInRow;
floatArray[i] = median;
}
simpleSpectrum.Add(floatArray);
}
我在 Unity 中遇到的错误是:
System.NullReferenceException: Object reference not set to an instance of an object at [...]:46
这意味着“simpleSpectrum.Add(floatArray);”不起作用,因为它不知道 floatArray 是什么。 “public List simpleSpectrum”是在全局范围内创建的。但是 floatArray 应该可以在函数中访问吗?
我希望有人能帮助我。 C# 对我来说是个新手!
请制作:
private List<float[]> _simpleSpectrum = new List<float>();
或者如果您需要在 class 之外访问它:
public List<float[]> SimpleSpectrum { get; set; }
这样它将 a) 工作并且 b) 与标准 C# 命名约定保持一致
passed to another float array, "simpleSpectrum"
小心使用“数组”和“列表”这两个词 - 如果您这么说的话,其他开发人员专业人士会期望您真的在使用这些东西。 SimpleSpectrum 是一个列表,而不是数组。如果你坚持它是一个数组,然后显示一些你调用 Add 方法的代码,C# 开发人员会很困惑
我正在尝试构建 3D 光谱仪并获取给定时间点的大量频率数据。我需要对此进行简化,以便能够处理大量预制件的实例化。所以我使用固定数量的频率数据行来查看:
int spectrumRows = 24;
然后我调用此函数来“简化”频谱的细节,方法是将值相加,然后将它们的中值添加到名为“floatArray”的浮点数组中。然后将其传递给另一个浮点数组“simpleSpectrum”,它告诉我存在此引用错误。
public void addToSimpleSpectrum(float[] spectrum) {
float spectralsInRow = spectrum.Length / spectrumRows;
Math.Round(spectralsInRow);
float[] floatArray = new float[(int)spectralsInRow];
for(int i = 0; i < spectralsInRow; i++){
float median = 0f;
float sum = 0f;
for (float o = spectralsInRow*i; o < (spectralsInRow*(i+1)); o++) {
sum = sum + spectrum[(int)o];
}
median = sum / spectralsInRow;
floatArray[i] = median;
}
simpleSpectrum.Add(floatArray);
}
我在 Unity 中遇到的错误是:
System.NullReferenceException: Object reference not set to an instance of an object at [...]:46
这意味着“simpleSpectrum.Add(floatArray);”不起作用,因为它不知道 floatArray 是什么。 “public List
我希望有人能帮助我。 C# 对我来说是个新手!
请制作:
private List<float[]> _simpleSpectrum = new List<float>();
或者如果您需要在 class 之外访问它:
public List<float[]> SimpleSpectrum { get; set; }
这样它将 a) 工作并且 b) 与标准 C# 命名约定保持一致
passed to another float array, "simpleSpectrum"
小心使用“数组”和“列表”这两个词 - 如果您这么说的话,其他开发人员专业人士会期望您真的在使用这些东西。 SimpleSpectrum 是一个列表,而不是数组。如果你坚持它是一个数组,然后显示一些你调用 Add 方法的代码,C# 开发人员会很困惑