对象引用未设置为对象的实例(c#)1

时间:2013-11-10 05:59:05

标签: c# nullreferenceexception

// Check if the new position is on an arrow
foreach (Item Item in GetFloorItems())
{
    if (Item.Definition.SpriteId == 5000)
    {
        if (Actor.PositionToSet.X == Item.RoomPosition.X && Actor.PositionToSet.Y == Item.RoomPosition.Y)
        {
            Session Session = SessionManager.GetSessionByCharacterId(Actor.ReferenceId);
            ItemEventDispatcher.InvokeItemEventHandler(Session, Item, this, ItemEventType.Interact, Actor.MoveToAndInteractData);
        }
    }
}

错误行:if (Actor.PositionToSet.X == Item.RoomPosition.X && Actor.PositionToSet.Y == Item.RoomPosition.Y)

抱歉,我是C#的新手。如果之前有这个问题,我似乎无法看到什么是错的,虽然它是在另一条线上,我所要做的只是检查它是否为空,但是在这里看不到多少相同的东西?

2 个答案:

答案 0 :(得分:0)

这可能有用。切换if

if (Actor.PositionToSet.X == Item.RoomPosition.X && Actor.PositionToSet.Y == Item.RoomPosition.Y)

到此:

if (Actor != null && Actor.PositionToSet != null && Actor.PositionToSet.X == Item.RoomPosition.X && Actor.PositionToSet.Y == Item.RoomPosition.Y)

当您尝试查看null对象的属性时,您将收到此错误。原因是null对象没有属性(ish)。如果Actor为null,则无法查看Actor.PositionToSet。如果Actor不为null,则可以查看属性PositionToSet,但如果为null,则无法查看属性X和Y.我希望这是有道理的,但只需添加任何其他问题的评论。

答案 1 :(得分:0)

if (Actor != null )
{
    if(Actor.PositionToSet != null )
    {
        if(Actor.PositionToSet.X == Item.RoomPosition.X && 
           Actor.PositionToSet.Y == Item.RoomPosition.Y) {
            // Do your stuff
        }
    }
}