Это пришло мне в голову после того, как я узнал следующее из этого вопроса :
where T : struct
Мы, разработчики C #, все знаем основы C #. Я имею в виду объявления, условия, циклы, операторы и т. Д.
Некоторые из нас даже освоили такие вещи, как Generics , анонимные типы , лямбды , LINQ , ...
Но каковы наиболее скрытые функции или уловки C #, которые даже фанаты C #, наркоманы, эксперты едва знают?
Вот некоторые выявленные особенности:
Ключевые слова
yield
от Michael Штумаvar
от Michael Штумаusing()
заявление кокосаreadonly
по KOKOSas
от Mike Stoneas
/is
От Ed Swangrenas
/is
(улучшено) от Rocketpantsdefault
по deathofratsglobal::
по pzycomanusing()
блоки от AlexCusevolatile
по Якуб Šturcextern alias
по Якуб Šturc
Атрибуты
DefaultValueAttribute
от Michael ШтумаObsoleteAttribute
от DannySmurfDebuggerDisplayAttribute
по StuDebuggerBrowsable
иDebuggerStepThrough
по bdukesThreadStaticAttribute
по marxidadFlagsAttribute
по Мартин КларкConditionalAttribute
от AndrewBurns
Синтаксис
??
(объединить нули) оператор Kokos- Числовая маркировка Ника Берарди
where T:new
по Lars Mæhlum- Неявные дженерики Кейта
- Однопараметрические лямбды Китом
- Авто свойства по Кит
- Псевдонимы пространства имен Китом
- Дословные строковые литералы с @ Патриком
enum
значения по lfoust- @variablenames от marxidad
event
операторы Марксидад- Строковые скобки формата от Portman
- Модификаторы доступа к свойствам от xanadont
- Условный (троичный) оператор (
?:
) по JasonS checked
иunchecked
операторы Биной Антонийimplicit and explicit
операторы Флори
Особенности языка
- Обнуляемые типы от Брэда Баркера
- Анонимные типы Китом
__makeref __reftype __refvalue
от Иуды Himango- Инициализаторы объектов lomaxx
- Формат строки Дэвида в Дакоте
- Методы расширения от marxidad
partial
методы Джон Эриксон- Директивы препроцессора Джона Асбека
DEBUG
директива препроцессора Роберта Дургина- Перегрузка оператора по SefBkn
- Вывод типа по чакриту
- Булевы операторы , принятые на следующий уровень по Rob Гоф
- Передать переменную типа значения в качестве интерфейса без бокса от Романа Бойко
- Программно определить объявленный тип переменной Романом Бойко
- Статические Конструкторы Крисом
- Упрощенное визуальное / сжатое ORM-картирование с использованием LINQ от roosteronacid
__arglist
от Zac Боулинг
Особенности Visual Studio
- Выделить блок текста в редакторе Химадри
- Фрагменты от DannySmurf
Фреймворк
TransactionScope
от KiwiBastardDependantTransaction
от KiwiBastardNullable<T>
от IainMHMutex
по DiagoSystem.IO.Path
по возрастуWeakReference
от Juan Manuel
Методы и свойства
String.IsNullOrEmpty()
метод от KiwiBastardList.ForEach()
метод от KiwiBastardBeginInvoke()
,EndInvoke()
методы Уилла ДинаNullable<T>.HasValue
иNullable<T>.Value
свойства RismoGetValueOrDefault
метод Джон Шиэн
Советы и хитрости
- Хороший метод для обработчиков событий от Andreas HR Nilsson
- Прописные сравнения Джона
- Доступ к анонимным типам без отражения от dp
- Быстрый способ ленивой реализации свойств коллекции с помощью Will
- Подобные JavaScript анонимные inline-функции от roosteronacid
Другой
- сетевые модули от kokos
- LINQBridge от Дункан Смарт
- Параллельные расширения от Джоэла Коухорна