Эффективный вес (как во время разработки, так и во время выполнения и т. Д.) Методов расширения в.NET

Мне было интересно, каков эффективный вес методов расширения, если они используются очень дико.

Если, например, я решу создать множество методов расширения string/int/datetime для многих распространенных повседневных задач, чтобы в результате получить некий свободный интерфейс, возможно, общий вес накачать чрезмерно? И если да, будет ли это во время разработки (например, intellisense db слишком сильно растет) или во время выполнения или в обоих случаях? Или никто из них? Чтобы избежать огромного количества методов, предлагаемых на основе intellisense, я думал о том, чтобы поместить их в отдельное пространство имен, такое как "MyCompany.PathExtensions" или "MyCompany.DateTimeExtensions" или даже все в причудливом "MyCompany.FluentEverywhere" или подобном...

Пример того, о чем я говорю:

DateTime d;
d = 23.Minutes().FromNow();
d = "14".ToIntOr(0).IsBetween(10,20).IfFalseThrow(new Exception("foo"));

String finalPath;
// This will give you "c:\foo\bar\"
finalPath = "c:\\".AppendPath("foo").AppendPath("bar").EnsureTrailingBackslash();

String finalUrl;
// This will give you "ftp://mycompany.com/foo/bar"
finalPath = "mycompany".EnsureDomainExtensionOr("com").AppendPath("foo/bar").EnsureTrailingSlashNotThere().EnsureProtocolOr("ftp");

И так далее... о, и не сходите с ума от таких вещей, как .IfFalseThrow(...)они были просто примерами;)!

Как вы думаете? Помимо использования, которое является приятным или нет в зависимости от вкусов, могут быть проблемы, связанные с общим весом?

Спасибо

2 ответа

Решение

Intellisense может привести к дополнительному извлечению методов, но во время выполнения вы вызываете несколько статически определенных методов, они очень легкие.

Теперь некоторые из методов расширения Linq тяжелы, но это потому, что они выполняют работу, а не только потому, что они являются методами расширения.

Как вы сказали, все зависит от внешнего вида, цепочки и т. Д., Но для производительности ничего не добавляется, если для чего-то используется метод расширения.

каков эффективный вес методов расширения

Точно так же, как эффект от использования статических методов. Методы расширений не больше, не меньше, чем просто статические методы, обернутые синтаксисом C#, которые выглядят как обычные методы.

Другие вопросы по тегам