★質問したいこと
「default(T)」は値なの?型なの?
(下記のコードがうまくいかない理由は?)

★状況
public class Range<T> where T : IComparable<T>
{
&nbsp; &nbsp; public T Begin { get; set; }
&nbsp; &nbsp; public T End { get; set; }
&nbsp; &nbsp; public bool Contains(T t)
&nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; &nbsp; return (Begin == default(T) || Begin.CompareTo(t) <= 0)
&nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; (End == default(T) || 0 < t.CompareTo(End));
&nbsp; &nbsp; }
}
Begin == defualt(T)のとこで「演算子 '==' を 'T' と 'T' 型のオペランドに適用することはできません。」
とか、表示されます。

T d = default(T);とか書いてみて、もちろんエラーは出ない。
さらに、if( Begin == d ) {...}とか書いてみると、 上記のエラー。