在调用委托之前,我已经完成了空检查代码

本文关键字:代码 检查 调用 | 更新日期: 2023-09-27 17:58:31

我在VS 2015中编写单位代码,这意味着它在c#4中,null条件运算符不可用。

在调用委托之前,我做了一个空检查。但是,代码显示为灰色。这是否意味着灰色代码不像评论那样有效?如果是,我应该怎么做才能防止调用null委托?

public delegate void PtjAnimCtrlDelegateColiderSetEnabledTo(bool value);
public PjtAnimCtrlDelegateColliderSetEnabledTo colliderSetEnabledToHandler;
public delegate void PjtAnimCtrlDelegate();
public PjtAnimCtrlDelegate explosionAnimationFinishedHandler;
public PjtAnimCtrlDelegate hitTargetHandler;
public void ExplosionAnimationFinished()
{
  //pjtCtrl.ExplosionAnimationFinished();
  explosionAnimationFinishedHandler();
}
public void SetColliderEnabled()
{
  colliderSEtEnabledToHandler(true);
}
public void SetColliderDisabled() 
{
  colliderSetEnabledToHandler(false);
}
public void HitTarget()
{
  // this IF statement is gray in Visual Studio
  if (hitTargetHandler != null)
  { 
    hitTargetHandler();
  }
}

在调用委托之前,我已经完成了空检查代码

在调用委托之前,我做了一个空检查。但是,代码显示为灰色。这是否意味着灰色代码不像评论那样有效?

这意味着Visual Studio预编译器/设计时编译器检测到该语句很可能不需要。

如果是,我应该怎么做才能防止调用null委托?

什么都不做,编译器仍然会在编译时(实际上也是在运行时)确定是否需要该语句。

我刚刚听说VS中的格雷码仍然会被编译。空检查仍然有效。所以这根本不是问题。

IDE使它变成灰色,表示有更简单的格式,在我的例子中就是null条件运算符。然而,它不应该在这里给出这样的建议,忽略它就好了。