I think what Daniel said was correct (if I'm following this)
Assuming Star is going to inherit from StarReport (as if I've got that wrong the rest of what I'm about to say is bull####)
So we will have
Dictionary<string,Star> OwnedStars;
Dictionary<string,StarReport> StarReports;
StarReports therfore consists of both StarReports AND Stars. So if star "X" is an owned star then:
(StarReports["X"] as Star) == OwnedStars["X"]
However planet "Y" is not owned so
(StarReports["Y"] as Star) == null
as "Y" would be a StarReport and wouldn't be in the OwnedStars dictionary.