Запитання з тегом «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 #, але не мав жодного успіху, додавши метод розширення до статичного класу, наприклад консолі. Наприклад, якщо я хочу додати розширення до консолі під назвою "WriteBlueLine", щоб я міг перейти: Console.WriteBlueLine("This text is blue"); Я спробував це, додавши локальний, загальнодоступний статичний метод із консоллю як …

30
Які ваші улюблені методи розширення для C #? (codeplex.com/extensionoverflow)
Заблокований . Це запитання та його відповіді заблоковано, оскільки це питання поза темою, але має історичне значення. Наразі не приймає нових відповідей чи взаємодій. Давайте складемо список відповідей, де ви розміщуєте свої чудові та улюблені методи розширення . Вимога полягає в тому, що повинен бути розміщений повний код, а також …

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 System.Collections.Generic; using …

4
Код, еквівалентний ключовому слову «дозволити» у викликах методу розширення 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ключове слово …


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

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

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

4
Спробуйте з ресурсами в Котліні
Коли я намагався написати еквівалент tryкоду Java -ресурсів у Котліні, мені це не вийшло. Я спробував різні варіанти наступного: try (writer = OutputStreamWriter(r.getOutputStream())) { // ... } Але не працює. Хтось знає, що слід використовувати замість цього? Мабуть, граматика Котліна не має визначення для такої конструкції, але, можливо, мені щось …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.