范围有问题? “对象引用未设置为对象的实例” [重复]

Posted

技术标签:

【中文标题】范围有问题? “对象引用未设置为对象的实例” [重复]【英文标题】:Problem with scopes? "Object reference not set to an instance of an object " [duplicate] 【发布时间】:2021-04-10 17:59:49 【问题描述】:

我正在尝试构建 3D Spectograph 并获取给定时间点的一堆频率数据。我需要简化这一点,以便能够处理大量预制件的实例化。所以我使用固定数量的 Rows of fequency 数据来查看:

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:对象引用未设置为 [...]:46 处的对象实例

这意味着“simpleSpectrum.Add(floatArray);”不起作用,因为它不知道 floatArray 是什么。 “public List simpleSpectrum”是在全局范围内创建的。但是 floatArray 应该可以在函数内访问,还是不能访问?

我希望有人可以帮助我。 C# 对我来说是新的!

【问题讨论】:

Math.Round(spectralsInRow); 是无操作的,因为您没有保存结果。 simpleSpectrum 需要在某处分配值 = new List&lt;float&gt;()。我建议您阅读作业的工作原理。 这能回答你的问题吗? What is a NullReferenceException, and how do I fix it? 另外,在对spectralsInRow进行四舍五入后,您可以将其存储在int中,以节省每次转换的时间 等一下。该错误意味着被引用的对象,即simpleSpectrum,为空。与floatArray的值无关。 【参考方案1】:

请做:

private  List<float[]> _simpleSpectrum = new List<float>();

或者如果您需要在课堂外访问它:

public List<float[]> SimpleSpectrum  get; set; 

这样它将 a) 工作并且 b) 与标准 C# 命名约定保持一致

传递给另一个浮点数组“simpleSpectrum”

小心使用“数组”和“列表”这两个词——如果你这么说,其他开发人员专业人士会期望你真的在使用这些东西。 SimpleSpectrum 是一个列表,而不是一个数组。如果您坚持认为它是一个数组,然后显示一些您在其上调用 Add 方法的代码,那么 C# 开发人员会非常困惑

【讨论】:

以上是关于范围有问题? “对象引用未设置为对象的实例” [重复]的主要内容,如果未能解决你的问题,请参考以下文章

对象引用未设置为对象实例的自动映射器问题

MVC 4 - 对象引用未设置为对象的实例。当 POST 动作和索引每一行时

blazor Web 程序集服务对象引用未设置为对象的实例

“对象引用未设置为对象的实例”即使我检查了 null

Roles.GetRolesForUser 抛出异常对象引用未设置为对象的实例

对象引用未设置为对象的实例...错误?