Isso funcionará bem (sem exceção). Os métodos de extensão não usam chamadas virtuais (isto é, usam a instrução "call" il, não "callvirt"), portanto, não há verificação nula, a menos que você mesmo a escreva no método de extensão. Isso é realmente útil em alguns casos:
public static bool IsNullOrEmpty(this string value)
{
return string.IsNullOrEmpty(value);
}
public static void ThrowIfNull<T>(this T obj, string parameterName)
where T : class
{
if(obj == null) throw new ArgumentNullException(parameterName);
}
etc
Fundamentalmente, chamadas para chamadas estáticas são muito literais - ou seja,
string s = ...
if(s.IsNullOrEmpty()) {...}
torna-se:
string s = ...
if(YourExtensionClass.IsNullOrEmpty(s)) {...}
onde obviamente não há verificação nula.
Cannot perform runtime binding on a null reference
.