我有一个简单的行
if (currentClip.DynamicSpeed != null)
其中currentClip是我自己的数据类型,DynamicSpeed是一个包含少量字符串和浮点变量的自定义类型。
在这种情况下,currentClip是对象,并表示DynamicSpeed为null。但是,我仍然从这一行得到NullReferenceException。此外,看起来堆栈跟踪指向正确的行以及异常来自哪里(一些解决方案表明它们可能是错误的并且还有其他解决方案)。
什么可能导致这种情况。 !=运算符也没有重载。
[edit]以下是相关课程。
public class Clip2D
{
public string Name;
[ContentSerializer(Optional = true)]
public bool FlipX;
[ContentSerializer(Optional = true)]
public bool FlipY;
[ContentSerializer(Optional = true)]
public string NextClip;
[ContentSerializer(Optional = true)]
public string PreviousClip;
[ContentSerializer(Optional = true)]
public DynamicSpeed DynamicSpeed;
}
public class DynamicSpeed
{
public string AffectingVariable;
public float MinSpeed;
public float MaxSpeed;
public float MinValue;
public float MaxValue;
}
应该注意的是它并不总是抛出它。
答案 0 :(得分:3)
简单的解决方案:
if (currentClip != null && currentClip.DynamicSpeed != null)
如果currentClip为null,则由于短路,它不会检查条件的第二部分。
答案 1 :(得分:0)
当它试图评估时
currentClip.DynamicSpeed
currentClip可能为null,导致异常。