Слышала, что в C# есть такие понятия как раннее и поздее связывание.
Когда стоит использовать одно, когда другое? Чем они отличаются? Есть ли у них преимущества/недостатки?
Слышала, что в C# есть такие понятия как раннее и поздее связывание.
Когда стоит использовать одно, когда другое? Чем они отличаются? Есть ли у них преимущества/недостатки?
При раннем связывании компилятор заранее знает адрес с типом, с которым будет оперировать. При позднем связывании компилятор узнаёт этот адрес в процессе выполнения программы.
Например когда мы добавляем dll библиотеку в проект путём добавления ссылки Reference/Add Reference - это раннее связывание, т.к. мы заранее даём знать этот адрес компилятору. Когда же мы используем рефлексию (или банально делаем перегрузку метода) - компилятор изначально не знает по какому адресу ему придётся пойти - это и называется поздним связыванием. По-умолчанию при создании метода в классе связывание раннее.
Сказать что одно явно лучше другого однозначно невозможно. Это как сравнивать языки программирования или аналогичные технологии на разных языках : всё сделано для чего-то, у всего своё применение.
Однако могу сказать точно, что преимуществом раннего связывания является гарантия того, что в процессе выполнения у нас не возникнет возможных проблем. Но при этом, используя раннее связывание, мы лишаемся гибкости позднего связывания. Всё-же Иногда необходимая информация может быть недоступной разработчику до момента выполнения)