Можно добавить пульты ДУ с git remote add <name> <url>
, можно тогда продвинуть к удаленному с git push <name> master:master
для продвижения локального основного ответвления к удаленному основному ответвлению.
при создании repo с git clone
удаленное называют origin
, но можно создать public
репозиторий для сервера онлайн и нажатия к нему с git push public master:master
Я не уверен, что это возможно в C # без использования Reflection.Emit. Если вы используете Reflection.Emit, вы можете загрузить значение перечисления в стек, а затем рассматривать его как int.
Однако вам нужно написать довольно много кода, поэтому вы захотите проверить, действительно ли вы при этом повысите производительность.
Я считаю, что эквивалентный IL будет:
.method public hidebysig instance int32 Foo<valuetype
.ctor ([mscorlib]System.ValueType) TEnum>(!!TEnum 'value') cil managed
{
.maxstack 8
IL_0000: ldarg.1
IL_000b: ret
}
Обратите внимание, что это завершится ошибкой, если ваше перечисление получено из long
(64-битное целое число).
EDIT
Еще одна мысль об этом подходе. Reflection.Emit может создать метод, указанный выше, но единственный способ привязки к нему - это виртуальный вызов (т.е. он реализует известный интерфейс / абстракцию во время компиляции, который вы могли бы вызвать) или косвенный вызов (т.е. через вызов делегата). Я полагаю, что оба этих сценария в любом случае будут медленнее, чем накладные расходы на упаковку / распаковку.
Также не забывайте, что JIT не тупой и может позаботиться об этом за вас. ( РЕДАКТИРОВАТЬ см. Комментарий Эрика Липперта по исходному вопросу - он говорит, что джиттер в настоящее время не выполняет эту оптимизацию. )
Как и со всеми проблемами, связанными с производительностью: измерять, измерять, измерять!
Думаю, вы всегда можете использовать System.Reflection.Emit для создания динамического метода и выдачи инструкций, которые делают это без упаковки, хотя это может быть непроверяемым.