Компилятор C# боится кастинга при преобразовании ссылки?

Я видел этот код:

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
0
задан Royi Namir 7 March 2012 в 08:35
поделиться