以下のコードでは、.NET 2.0 Framework をターゲットにしています。
Person (基本クラス) を期待する Compare メソッドに Programmer (派生) オブジェクトを渡すことができます。
しかし、プログラマーは人であるため (単純なオブジェクト指向の概念)、.NET 4.0 では、IComparable インターフェイス宣言の「in」キーワードは「やり過ぎ」であると主張します:)
in キーワードを削除することについて Microsoft にメールを書く前に、別の方法で私を納得させてください :)
class Program
{
static void Main(string[] args)
{
var person = new Person();
var test = person.CompareTo(new Programmer());
}
}
internal class Person : IComparable<Person>
{
public int Id { get; set; }
public string Name { get; set; }
public int CompareTo(Person other)
{
return this.Id - other.Id;
}
}
class Programmer : Person
{
public string ProgrammingLanguage { get; set; }
}