Я видел этот код:
StringBuilder Foo<T> (T arg)
{
if (arg is StringBuilder)
return (StringBuilder) arg; // Will not compile
...
}
однако:
StringBuilder Foo<T> (T arg)
{
StringBuilder sb = arg as StringBuilder;
if (sb != null) return sb;
...
}
будет компилироваться.
Почему? чего боится компилятор?
p.s. я видел другое решение, которое:
(StringBuilder) (object) arg