Я часто нахожу, как в ArrayMarkupExtension.cs , люди выполняют кастинг, который мне кажется тривиальным.
Рассмотрим упрощенную версию следующим образом.
Что такое разница между (this as IFoo<string>).Do()
и this.Do()
в следующем коде?
interface IFoo
{
object Do();
}
interface IFoo<out T> : IFoo
{
new T Do();
}
class Something : IFoo<string>
{
public string Do()
{
return this.GetType().Name;
}
object IFoo.Do()
{
//return this.Do();
return (this as IFoo<string>).Do();
}
}