- ふらっとVisual C#,C♯,C#(初心者用) Part111
258 :デフォルトの名無しさん[]:2014/04/27(日) 10:37:42.14 ID:/A+wJ+qi - ★質問したいこと
「default(T)」は値なの?型なの? (下記のコードがうまくいかない理由は?) ★状況 public class Range<T> where T : IComparable<T> { public T Begin { get; set; } public T End { get; set; } public bool Contains(T t) { return (Begin == default(T) || Begin.CompareTo(t) <= 0) && (End == default(T) || 0 < t.CompareTo(End)); } } Begin == defualt(T)のとこで「演算子 '==' を 'T' と 'T' 型のオペランドに適用することはできません。」 とか、表示されます。 T d = default(T);とか書いてみて、もちろんエラーは出ない。 さらに、if( Begin == d ) {...}とか書いてみると、 上記のエラー。
| - ふらっとVisual C#,C♯,C#(初心者用) Part111
259 :258[]:2014/04/27(日) 10:39:06.66 ID:/A+wJ+qi - >>258
あれっ!HTMLエンコードしすぎちゃった!
| - ふらっとVisual C#,C♯,C#(初心者用) Part111
265 :258[]:2014/04/27(日) 12:48:31.67 ID:/A+wJ+qi - >>261-264
とりあえずこうしてみます。 >>263案で。 みんなありがとう。 public class Range<T> where T : IComparable<T> { public T Begin { get; set; } public T End { get; set; } public bool Contains(T t) { return (object.Equals(Begin, default(T)) || Begin.CompareTo(t) <= 0) && (object.Equals(End, default(T)) || 0 < t.CompareTo(End)); } }
|
|