Вопросы с тегом «extension-methods»

Метод расширения - это языковая функция некоторых языков, таких как Swift, Visual Basic.NET и C #. Методы расширения позволяют «добавлять» методы к существующим типам без создания нового производного типа, перекомпиляции или иного изменения исходного типа.


18
Отличаться () с лямбда?
Правильно, поэтому у меня есть перечислимое и я хочу получить от него различные значения. Используя System.Linq, конечно, есть метод расширения под названием Distinct. В простом случае его можно использовать без параметров, например: var distinctValues = myStringList.Distinct(); Хорошо, но если у меня есть множество объектов, для которых мне нужно указать равенство, …

8
Какой метод работает лучше: .Any () vs .Count ()> 0?
в System.Linqпространстве имен мы можем теперь расширить наши IEnumerable, чтобы иметь методы расширения Any () и Count () . Недавно мне сказали, что если я хочу проверить, что коллекция содержит 1 или более элементов внутри, я должен использовать .Any()метод расширения вместо .Count() > 0метода расширения, потому что .Count()метод расширения должен …

15
Могу ли я добавить методы расширения в существующий статический класс?
Я фанат методов расширения в C #, но не смог успешно добавить метод расширения в статический класс, такой как Console. Например, если я хочу добавить в консоль расширение, называемое «WriteBlueLine», чтобы я мог перейти: Console.WriteBlueLine("This text is blue"); Я попробовал это, добавив локальный, публичный статический метод, с консолью в качестве …

30
Какие ваши любимые методы расширения для C #? (Codeplex.com/extensionoverflow)
Locked . Этот вопрос и его ответы заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия. Давайте составим список ответов, где вы разместите свои превосходные и любимые методы расширения . Требование состоит в том, что должен быть опубликован …

20
Почему в IEnumerable отсутствует метод расширения ForEach?
Вдохновлен еще одним вопросом о недостающей Zipфункции: Почему ForEachв Enumerableклассе нет метода расширения ? Или где угодно? Единственный класс, который получает ForEachметод List<>. Есть ли причина, по которой он отсутствует (производительность)?

7
Что происходит в C #, когда вы вызываете метод расширения для нулевого объекта?
Метод вызывается с нулевым значением или он дает исключение нулевой ссылки? MyObject myObject = null; myObject.MyExtensionMethod(); // <-- is this a null reference exception? Если это так, мне никогда не нужно будет проверять мой параметр this на null?

6
Преобразуйте строку [] в int [] в одну строку кода, используя LINQ
У меня есть массив целых чисел в виде строки: var arr = new string[] { "1", "2", "3", "4" }; Мне нужно массив "реальных" целых чисел, чтобы продвинуть его дальше: void Foo(int[] arr) { .. } Я попытался привести int, и это, конечно, не удалось: Foo(arr.Cast<int>.ToArray()); Я могу сделать следующее: …

9
Методы расширения должны быть определены в неуниверсальном статическом классе
Я получаю ошибку: Методы расширения должны быть определены в неуниверсальном статическом классе На линии: public class LinqHelper Вот вспомогательный класс, основанный на коде Марка Гевелса. Я действительно не понимаю, что означает эта ошибка, так как я уверен, что она работала нормально, когда я оставил ее в пятницу! using System; using …

4
Код, эквивалентный ключевому слову let, в цепочечных вызовах методов расширения LINQ
Используя функции понимания запросов компиляторами C #, вы можете написать код: var names = new string[] { "Dog", "Cat", "Giraffe", "Monkey", "Tortoise" }; var result = from animalName in names let nameLength = animalName.Length where nameLength > 3 orderby nameLength select animalName; В приведенном выше выражении запроса letключевое слово позволяет …


7
Методы расширения с помощью Moq
У меня есть существующий интерфейс ... public interface ISomeInterface { void SomeMethod(); } и я расширил этот интерфейс, используя миксин ... public static class SomeInterfaceExtensions { public static void AnotherMethod(this ISomeInterface someInterface) { // Implementation here } } У меня есть класс, называющий это, который я хочу проверить ... public …

6
Перегрузка операторов методами расширения C #
Я пытаюсь использовать методы расширения для добавления перегрузки оператора в StringBuilderкласс C # . В частности, учитывая StringBuilder sb, я хотел бы sb += "text"стать эквивалентным sb.Append("text"). Вот синтаксис для создания метода расширения для StringBuilder: public static class sbExtensions { public static StringBuilder blah(this StringBuilder sb) { return sb; } …

8
Расширения Razor HtmlHelper (или другие пространства имен для представлений) не найдены
Не знаю, происходило ли это в PR или в бета-версии, но если я создал метод расширения HtmlHelper, он не распознается на странице с поддержкой Razor: namespace SomeNamespace.Extensions { public static class HtmlExtensions { public static string Foo(this HtmlHelper html) { return "Foo"; } } } Я добавил его в <Namespaces>раздел …

4
Попробуй с ресурсами в Котлине
Когда я попытался написать эквивалент tryкода Java -with-resources в Kotlin, это не сработало для меня. Я пробовал разные варианты следующего: try (writer = OutputStreamWriter(r.getOutputStream())) { // ... } Но ни один не работает. Кто-нибудь знает, что следует использовать вместо этого? Очевидно, у грамматики Котлина нет определения для такой конструкции, но, …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.