Если вы используете практические примеры для ваших типов, вы увидите следующее:
SqlConnection connection = new SqlConnection();
Foo(ref connection);
И теперь у вас есть ваша функция, которая принимает предка ( ie Object
):
void Foo2(ref Object connection) { }
Что может быть с этим связано?
void Foo2(ref Object connection)
{
connection = new Bitmap();
}
Вам просто удалось назначить Bitmap
на ваш SqlConnection
.
Это нехорошо.
Повторите попытку с другими:
SqlConnection conn = new SqlConnection();
Foo2(ref conn);
void Foo2(ref DbConnection connection)
{
conn = new OracleConnection();
}
Вы наполнили OracleConnection
поверх вашего SqlConnection
.