Also I'm testing for intersections like this:

return (Abs(Corners[0].X - B.GetCorners[0].X) * 2 < (Corners[1].X + B.GetCorners[1].X)) && (Math.Abs(Corners[0].Y - B.GetCorners[0].Y) * 2 < (Corners[1].Y + B.GetCorners[1].Y));

if I always need to check for intersections as well as containment is there a better method I could use to check both at the same time more cheaply?