}
// GetHashCode().
public override int GetHashCode() { return Val.GetHashCode();
}
}
class CompareDemo {
// IEquatable<T>.
public static bool IsIn<T>(T what, T[] obs) where T: IEquatable<T> { foreach(T v in obs)
if(v.Equals(what)) // Equals() return true;
Return false;
}
// IComparable<T>. // , . // true, what // , obs.
public static bool InRange<T>(T what, T[] obs) where T: IComparable<T> { if(what.CompareTo(obs[0]) < 0 ||
what.CompareTo(ob[obs.Length-1]) > 0) return false; return true;
}
// , static void Main() {
// Isln() int. int[] nums = { 1, 2, 3, 4, 5 };
If(IsIn(2, nums))
Console.WriteLine(" 2.");
If(Isln(99, nums))
Console.WriteLine("He .");
// Isln() MyClass.
MyClass[] mcs = { new MyClass(1), new MyClass(2),
new MyClass(3), new MyClass(4) };
If(lsln(new MyClass(3), mcs))
Console.WriteLine(" MyClass(3).");
If(Isln(new MyClass(99), mcs))
Console.WriteLine("He .");
// InRange() int. if(InRange(2, nums))
Console.WriteLine(" 2 nums."); if(InRange(1, nums))
Console.WriteLine(" 1 nums."); if(InRange(5, nums))
Console.WriteLine(" 5 nums."); if(!InRange(0, nums))
Console.WriteLine(" HE nums."); if(!InRange(6, nums))
Console.WriteLine(" 6 HE nums.");
// InRange() MyClass.. if(InRange(new MyClass(2), mcs))
Console.WriteLine(" MyClass(2) nums."); if(InRange(new MyClass(1), mcs))
Console.WriteLine(" MyClass(1) " +
" nums."); if(InRange(new MyClass(4), mcs))
Console.WriteLine(" MyClass(4) " +
" nums."); if(!InRange(new MyClass(0), mcs))
Console.WriteLine(" MyClass(0) HE " +
" nums."); if(!InRange(new MyClass(5), mcs))
Console.WriteLine(" MyClass(5) HE " +
" nums.");
}
}
.
2.
MyClass (3).
2 nums.
1 nums.
|
|
5 nums.
0 nums
6 nums
MyClass(2) nums.
MyClass(1) nums.
MyClass(4) nums.
MyClass(0) nums.
MyClass(5) nums.
, , , == ! =, . IComparable IComparable<T> IEquatable<T>.
. , . , , , .