只見喬恩斯基特的演講在NDC 2010不同FW中的協變會導致代碼中斷?
他提到一件趣事:
public Class Base
{
public void Foo(IEnumerable<string> strings){}
}
public Class Child:Base
{
publc void Foo(IEnumerable<object> objects) {}
}
Main :
List<string> lst = new List<string>();
lst.Add("aaa");
Child c = new Child();
c.Foo(lst);
用C#3,它會調用:Base.Foo
用C#4,它會調用:Child.Foo
我知道這是因爲協變
問題:
難道這不是一個代碼突破變化? 是否有任何解決方法,以便此代碼將繼續工作,因爲它在版本3?
謝謝@jon是否有任何網站將代碼中斷從第1版改爲第2版? – 2012-02-17 21:03:10
@RoyiNamir:這裏是C#4的一個:http://msdn.microsoft.com/en-us/library/ee855831(v=vs.110).aspx - 我不知道是否有類似的早期版本。 – 2012-02-17 21:04:41
謝謝你的回答。 – 2012-02-17 21:08:34