public static void Main(string[] args)
var superman = new Hero { Name = "Superman"};
var batman = new Hero { Name = "Batman" };
Console.WriteLine("Evil At Work!");
foreach(var hero in heroes) {
var hereToSaveTheDay = hero == null
$"Can {hero.Name} Save The Day? {hereToSaveTheDay}"
Console.WriteLine("But wait...");
foreach(var hero in heroes) {
var hereToSaveTheDay = hero is null
$"Can {hero.Name} Save The Day? {hereToSaveTheDay}"
public string Name { get; set; }
public static bool operator ==(Hero first, Hero second) {
if (first is null || second is null) {
return first.Name == second.Name;
public static bool operator !=(Hero first, Hero second) {
if (first is null || second is null) {
return first.Name == second.Name;
public override int GetHashCode() {
return (Name?.GetHashCode()).GetValueOrDefault();
public override bool Equals(object obj) {
return (Name?.Equals(obj)).GetValueOrDefault();