Для постоянной настройки переменных окружения вы можете использовать одну из существующих ролей в Ansible Galaxy. Я рекомендую franklinkim.environment .
Использование анизотропной галактики:
$ ansible-galaxy install franklinkim.environment
Использование требований.yml:
- src: franklinkim.environment
Затем в вашем плейбуке:
- hosts: all
sudo: yes
roles:
- role: franklinkim.environment
environment_config:
NODE_ENV: staging
DATABASE_NAME: staging
Хорошо, так как есть общий интерес, вот быстрая версия:
Console.WriteLine (one)
Это будет использовать перегрузку WriteLine(object)
, которая, в свою очередь, выполнит object.ToString()
, переопределенный в One
- следовательно, выход ToString override
Console.WriteLine (one.ToString ())
Это будет выглядеть на One
и посмотрите, какие методы имеют вновь объявленные методы - переопределение ограничений. Существует только один такой метод, который применим - тот, у которого есть необязательный параметр.
Console.WriteLine (one.ToString («foo»))
То же самое, но это означает, что это выполняется, используя значение по умолчанию, поэтому компилятор не должен использовать значение по умолчанию, следовательно ToString with optional parameter foo
Console.WriteLine (два)
Опять же, это вызовет виртуальный метод object.ToString()
из WriteLine(object)
. Этот метод не был переопределен, поэтому используется реализация по умолчанию, возвращающая имя типа, что приводит к выводу ConsoleApplication1.Test2
.
Console.WriteLine (two.ToString ())
Компилятор просматривает весь метод, объявленный в Two
, который не переопределяет виртуальные методы. В этом случае существует два таких метода - без параметров и один с необязательным параметром. Необязательный параметр включен, потому что это new , а не переопределение метода базового класса.
Метод без параметров считается «лучшим» кандидатом, потому что компилятор предпочитает вызывать метод, который doesn Не нужно заполнять какие-либо дополнительные параметры. Следовательно, вывод ToString new
Console.WriteLine (two.ToString («bar»))
Опять же, компилятор просматривает все метод, объявленный в Two
, который не является , переопределяя виртуальные методы. В этом случае существует два таких метода - но беззадачный не применим, оставив только тот, у которого есть необязательный параметр. Компилятору не нужно использовать значение по умолчанию необязательного параметра здесь, так как у него есть аргумент в любом случае ... так что выход ToString with optional parameter bar
Для гораздо большего на этом, прочитайте спецификацию языка C # или для дома с половиной пути, см. статью о перегрузке .