using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
List<Program> p = new List<Program>();
// exception
//p.First();
// null but only implicitly
p.FirstOrDefault();
// null but explicitly
var a = p.DefaultIfEmpty(null).First();
// null, back to being implicitly as DefaultIfEmpty's value is ignored here
var b = p.DefaultIfEmpty(new Program()).FirstOrDefault();
Console.WriteLine(b);
}