Какая ваша любимая функция в .NET?

В .NET есть много возможностей. Некоторые связаны с языком, другие будут связаны с самой структурой и иметь возможность доступа / выполнения / выполнения xyz. Так что ради интереса мне было интересно, что включает в себя любимые функции сообщества в .NET или ASP.NET?

Это вопрос сообщества вики, поскольку он предназначен в основном для целей опроса, чтобы увидеть, какой ответ есть для всех аспектов .СЕТЬ.

Будьте конкретны, попробуйте включить что-нибудь об этом, например, образец кода.

Примеры категорий и тем:

  • DLR
  • Linq
  • Выражения
  • WPF
  • Дженерики
  • WCF

Я думал об этом, но, в отличие от «менее известных» классов, я хотел увидеть больше отзывов о функциях, которые нравятся людям (возможно, широко известным).

nyxtom 26.10.2008 04:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
1
1 095
17

Ответы 17

Дженерики. Отлично подходит для того, чтобы не катить собственные классы контейнеров. Доступно с C# 2.0.

public T Remove<T>(T item) {
  foreach (T t in this.list) {
    if (t.equals(item)) {
      list.delete(t);
      return t;
    }
  }
  return null;
}

+1 за это. Попробовав Фонтан Обобщений, мне трудно использовать язык без него. «Конечно, я могу просто использовать здесь List <MyClass>! О ... подожди ... дерьмо».

Michael Stum 26.10.2008 06:17

Отражение. Посмотрим правде в глаза: без Reflection .NET - это просто желание C. Или, может быть, если мы хотим быть щедрыми, Java хочет быть, но у Java есть отражение, и в противном случае отчасти пахнет паскалем, который хочет быть, поэтому давайте избегать этого аргумента и просто согласимся с тем, что .NET очень хочет быть портативным ассемблером. с достаточным количеством метаданных, чтобы VB работал.

Я слышал, как люди утверждали, что вам следует избегать использования Reflection, потому что это замедляет работу вашей программы и усложняет жизнь инструментам статического анализа ... Честно говоря, это просто навоз. Функции замедляют работу C, но кто будет писать код на C без функций? Макросы затрудняют статический анализ для C, но C - ничто без макросов! Поэтому я призываю вас сходить с ума - если Reflection облегчает вашу жизнь, используйте его. Черт возьми, злоупотребляйте этим. Подчините Ваш выбор на языке .NET своей воле и покажите ему, кто здесь главный - с Reflection в качестве вашего верного дубовая дубина воли. Затем выпейте чай со льдом и посмотрите на работы своих рук, уверенные, что никто не посмеет сказать, что вы не владеете своими инструментами.

Отличный ответ. Я почти не пишу программу, в которой не используется рефлексия. А если он будет медленным? Вам не нужно вкладывать это во все свои внутренние петли! А инструменты статического анализа похожи на очень сложных коллег. Нельзя ожидать, что вы напишете код, который всем понятен.

Guge 11.12.2008 13:17

Linq в SQL и ADO.NET Entity Framework, замечательные функции ...

Что ж, у многих людей есть сомнения по поводу EF (во многих случаях чрезмерно сложный и вынуждает использовать базовый класс; в отличие от LINQ-to-SQL или NHibernate)

Marc Gravell 26.10.2008 11:39

На самом деле у меня нет языковых функций, которые я бы назвал «любимыми». Я имею в виду, что я люблю дженерики, и я люблю LINQ, среди многих других вещей, но это все полусырые имитации вещей, которые лучше работают на других языках.

Пример: дженерики - это здорово, но далеко не так мощно и полезно, как шаблоны C++. Пример 2: методы расширения LINQ великолепны, но далеко не так эффективны или полезны, как открытые классы + простые старые методы в ruby.

И так далее.

Честно говоря, в .NET мне больше всего нравится скорость и модель развертывания. Возможность использовать все эти недоделанные, но все же отличные функции бесконечно предпочтительнее, чем не иметь возможности их использовать вообще, потому что время выполнения очень медленное (например, рубиновый), или потому что никто не может загрузить вашу dll, если они не использовали точно такую ​​же. вариант вашего сумасшедшего компилятора в режиме выпуска с определенными флагами (например, C++)

Базовые шаблоны .NET - это шаблоны разные для C++; в некотором смысле они намного мощнее более, чем их кузены на C++, а в других отношениях меньше.

Marc Gravell 26.10.2008 11:42

Управление состоянием ASP.NET и веб-формы.

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

При правильном использовании, с отключенным ViewState там, где он не нужен, повторным заполнением данных, когда это необходимо, и т. д. WebForms значительно упрощают веб-разработку, чем когда вы используете что-то вроде PHP или ASP.

ADO.NET, Особо строго типизированные наборы данных, используемые с DataAdapters. Это упрощает управление кодом для взаимодействия с базами данных и хранимыми процедурами.

Дайте мне простой урок в любой день ... хотя бы просто высказать свое мнение. Для работы с БД LINQ-to-SQL или NHibernate работают намного лучше.

Marc Gravell 26.10.2008 11:40

Я думаю, что в .NET есть много замечательных функций, но я голосую за то, что делает эту платформу одним из лучших вариантов программных технологий:

  • Вывоз мусора - Блаженное игнорирование того, когда нужно освободить память для вашего объекта, - отличный подарок. На других языках (C++), если вы не убираете за собой, вы получаете утечки памяти и синие экраны.

  • Как раз вовремя компиляция - компилятор оптимизирует каждый метод перед использованием, удаляя избыточный или неоптимизированный код.

  • Домены приложений - когда приложение .NET умирает, оно не деформирует вашу систему.

  • Параллельное исполнение и Развертывание XCopy - Больше никаких адских DLL. Достаточно.

  • Платформа Абстракция - фреймворк скрывает множество деталей управления версиями собственного Win32 Api.

  • Нейтральный язык - Будь то VB.NET, C# или любой другой язык, который вы предпочитаете, это все MSIL. Возможность наследовать класс C# в VB.NET - это здорово.

  • Совместимость - возможность вызова устаревшего Win32 API, взаимодействия с COM + и т. д.

Другие:

  • Отражение, как было сказано ранее, убийственно.
  • Поддержка конфигурации Xml намного превосходит синтаксис файла свойств Java.

Мне действительно нужно выбрать один?

Делегаты; Мне нравится возможность писать код в функциональном стиле без боли F# и нетипизированных указателей функций C++. Добавьте к этому очень красивый синтаксис лямбда (C#) и поддержку компилятора для захвата, и они великолепны! Я предпочитаю захваты C# захватам java, поскольку значение может передаваться любым способом (фиксируется переменная, а не значение).

Как банальный пример - насколько это не больно?

string name = // something interesting
var item = list.Find(x => x.Name == name && x.Status == Status.Open);

GDI +

Раньше было очень сложно сделать графику. С GDI + это стало безболезненно. И в нем столько функциональности. Такие вещи, как Matrix, Path, Transparency, SmoothingMode, великолепны, и с ними очень весело играть.

А если этого вам недостаточно, вы также можете использовать DirectDraw или Direct3D.

GDI + - это Win32 API. Думаю, вы имели в виду System.Drawing.

Justin 11.08.2010 07:43

Атрибуты (Java: аннотации).

Комбо: делегаты + анонимные методы + лямбда-выражение

Сборщик мусора. Через некоторое время вы принимаете это как должное.

В произвольном порядке

Отражение Linq
Лямбды

Черт, были случаи, когда я объединил все три в одном утверждении.

Код позади файлы

.. огромный шаг от эры классических ASP (и php?)

  • LINQ
  • Тот факт, что все идет на IL, что означает, что вы можете реализовать любой язык поверх него и получить такие вещи, как обобщения и LINQ, за очень небольшие деньги.
  • WF - Я знаю, что это сложная и не самая лучшая реализация этого, но если вы потратите на это время, вы обнаружите, что он хорошо работает для своей целевой цели.

Фонд связи Windows (WCF) - моя любимая функция .NET. Это большой шаг вперед по сравнению с обычными веб-службами. Он также включает в себя постоянно растущую популярность REST-дизайна.

дженерики и деревья выражений

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