Один подход к работе вокруг этого заключается в использовании лямбда, содержащей интерполированную строку. Что-то вроде:
Func<string, string> formatter = url => $"URL: {url}";
...
var googleUrl = "http://google.com";
...
var log = formatter(googleUrl);
В C # 7.0 вы можете использовать локальную функцию вместо лямбда, чтобы сделать код немного более простым и эффективным:
string formatter(string url) => $"URL: {url}";
...
var googleUrl = "http://google.com";
...
var log = formatter(googleUrl);
От O'Reilly:
- заметные различия между System V и реализациями семафора POSIX - то, что в System V можно управлять, насколько семафорное количество может быть увеличено или уменьшено; тогда как в POSIX, семафорное количество увеличено и уменьшено на 1.
- семафоры POSIX не позволяют управление семафорными полномочиями, тогда как семафоры System V позволяют Вам изменять полномочия семафоров к подмножеству исходного разрешения.
- Инициализация и создание семафоров являются атомарными (с точки зрения пользователя) в семафорах POSIX.
- С точки зрения использования, семафоры System V неуклюжи, в то время как семафоры POSIX просты
- , масштабируемость семафоров POSIX (использующий семафоры без имени) намного выше, чем семафоры System V. В пользователе/клиентском сценарии, где каждый пользователь создает ее собственные экземпляры сервера, было бы лучше использовать семафоры POSIX.
- семафоры System V, при создании семафорного объекта, создают массив семафоров, тогда как семафоры POSIX создают всего один. Из-за этой функции семафорное (мудрое объемом потребляемой памяти) создание является более дорогостоящим в семафорах System V когда по сравнению с семафорами POSIX.
- было сказано, что производительность семафора POSIX лучше, чем system-v-основанные семафоры.
- семафоры POSIX обеспечивают механизм для семафоров всего процесса, а не семафоров в масштабе всей системы. Так, если разработчик забывает закрывать семафор на выходе процесса, семафор очищен. Проще говоря, семафоры POSIX обеспечивают механизм для нестойких семафоров.