а также

ь Этоне вопрос о том, как реализовать или подражать утиной типизации в C # ...

В течение нескольких лет у меня сложилось впечатление, что некоторые особенности языка C # зависели от структур данных, определенных в самом языке (что мне всегда казалось странным сценарием «курица и яйцо»). Например, у меня сложилось впечатление, чтоforeach Цикл был доступен только для использования с типами, которые реализованыIEnumerable.

С тех пор я понял, что компилятор C # использует утку, чтобы определить, можно ли использовать объект в цикле foreach, ищаGetEnumerator метод, а неIEnumerable, Это имеет большой смысл, так как устраняет головоломку с курицей и яйцом.

Я немного сбит с толку относительно того, почему это не похоже на случай сusing блок иIDisposable, Есть ли какая-то конкретная причина, по которой компилятор не может использовать утку, набираяDispose метод? В чем причина этого несоответствия?

Возможно, что-то еще происходит под капотом с IDisposable?

Обсуждая, почему вы быКогда-либо есть объект с методом Dispose, который не реализовал IDisposable, выходит за рамки этого вопроса :)

Ответы на вопрос(0)

Ваш ответ на вопрос