Это пришло мне в голову после того, как я узнал следующее из этого вопроса :
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 от Дункан Смарт
- Параллельные расширения от Джоэла Коухорна