Хранимая процедура возврата в DataSet в C # .Net

Одно тонкое, но решающее различие заключается в том, что consts оцениваются во время компиляции, тогда как statics оцениваются во время выполнения. Это оказывает существенное влияние на управление версиями. Например, предположим, что вы пишете:

public const int MaxValue = 100;

Вы компилируете и отправляете свою сборку (сборка А). Затем кто-то пишет сборку (сборка B), которая ссылается на MaxValue. В этом случае значение 100 скомпилируется как в их сборку, так и в вашу.

Если вы написали это:

public static readonly int MaxValue = 100;

, то ссылка в их сборке осталась бы такой , ссылка. Когда кто-то выполнил сборку B, значение 100 будет загружено из сборки , сборка A.

Это может, например, повлиять на простые сценарии исправления. Если вы выпустили обновленную сборку A, где MaxValues ​​объявлено как 200, и пользователь копирует эту версию по сравнению с предыдущей версией (но не перекомпилирует сборку B), то в первом сценарии Assembly B будет продолжать работать так, как если бы MaxValues ​​составляли 100, потому что это значение const, которое было скомпилировано в сборку B. Во втором сценарии Assembly B получит новое значение, потому что оно загружает переменную non-const static во время выполнения.

13
задан marc_s 19 October 2012 в 11:57
поделиться