What keeps us from comparing the values of generic types which are known to be icomparable? Doesn't it somehow defeat the entire purpose of generic constraints? Static generic methods allow type-inference to make usage really easy; Static fields on generic classes allow virtually overhead-free storage of (meta)data.

Understanding the Context

It wouldn't surprise me at all if. In case you happen to have a generic method that returns a generic value but doesn't have generic parameters, you can use default(t) + (t)(object) cast, together with c# 8 pattern.