Это не имеет ничего общего с COM-объектами, это просто правило C #.Вы не можете передать ссылочный тип параметру out
или ref
, если только ссылка не того же типа, что и тип параметра.
В противном случае это допускает небезопасные сценарии, подобные следующим
public void Swap(ref Object value) {
value = typeof(Object);
}
string str = "foo";
Swap(out str); // String now has an Type???
Теперь ссылка string
относится к объекту с типом Type
, который является неправильным и очень небезопасным.