Java является довольно подробным языком программирования, который становится устаревшим очень быстро со всеми новыми необычными языками/платформами, выходящими за прошлые 5 лет. Поддерживать весь необычный синтаксис, который люди хотят на языке И сохраняют назад совместимость, имеет больше смысла добавлять больше языков ко времени выполнения.
Другое преимущество - он, позволяет Вам выполнить некоторые веб-платформы, записанные в крыле Ruby JRuby (иначе направляющие), или Grails (Groovy на Railys по существу), и т.д. на доказанной платформе хостинга, которая, вероятно, уже работает во многих компаниях, вместо того, чтобы иметь необходимость к использованию этого совсем не как проверенные на практике среды хостинга Ruby.
Для компиляции других языков Вы просто преобразовываете в Байт-код Java.
Я определенно нашел это полезным, да. Это приведет к крошечным, крошечным затратам на производительность - но преимущество в удобочитаемости, так как отсутствие необходимости выполнять тест на недействительность делает его достойным IMO.
Стоит отметить, что это один из немногих случаев, когда лучше использовать анонимный метод, а не лямбда-выражение - в противном случае вам нужно назвать параметры, которые вы собираетесь игнорировать, например:
public event EventHandler<LoadEventArgs> LoadedData = (sender, args) => {};
Мне не нравится называть вещи, которые я не собираюсь использовать:)
Я обычно не использую C #, но мне кажется, что это хорошая практика. Это приложение из учебника шаблона Null Object . Как уже отмечалось, это будет стоить с точки зрения производительности, когда фактически работает пустой делегат, но выигрывает с точки зрения производительности каждый раз, когда вам не нужно проверять явный ноль - так что это также должна быть чистая выигрышная производительность. мудро всякий раз, когда частота пустых делегатов низкая.