Это пришло мне в голову после того, как я узнал следующее из этого вопроса:
where T : struct
Мы, разработчики С#, все знаем основы С#. Я имею в виду декларации, условные обозначения, циклы, операторы и т.д.
Некоторые из нас даже освоили такие вещи, как Generics, анонимный типы, lambdas, LINQ,...
Но каковы самые скрытые функции или трюки С#, которые даже поклонники С#, наркоманы, эксперты едва ли знают?
Вот раскрытые возможности:
Ключевые слова
-
yieldот Michael Stum -
varby Майкл Стум -
using()оператор kokos -
readonlykokos -
asМайк Стоун -
as/isЭд Свангрен -
as/is(улучшено) Rocketpants -
defaultdeathofrats -
global::pzycoman -
using()блокирует AlexCuse -
volatileЯкуб Штурк -
extern aliasЯкуб Штурк
Атрибуты
-
DefaultValueAttributeот Michael Stum -
ObsoleteAttributeDannySmurf -
DebuggerDisplayAttributeStu -
DebuggerBrowsableиDebuggerStepThroughbdukes -
ThreadStaticAttributemarxidad -
FlagsAttributeМартин Кларк -
ConditionalAttributeAndrewBurns
Синтаксис
-
??(coalesce nulls) оператор kokos - Знаки числа Ник Берарди
-
where T:newLars Mæhlum - Неявные дженерики Keith
- Однопараметрические лямбды Keith
- Авто свойства Keith
- Имена псевдонимов Keith
- Вербатные строковые литералы с @by Patrick
-
enumзначения lfoust - @variablenames marxidad
-
eventоператоры marxidad - Форматировать скобки строки Портман
- Модификаторы доступности доступа к ресурсам по xanadont
- Условный (тройной) оператор (
?:) на JasonS -
checkedиuncheckedоператоры Binoj Antony Операторы -
implicit and explicitФлори
Особенности языка
- Nullable types by Брэд Баркер
- Анонимные типы Keith
-
__makeref __reftype __refvalueИуда Химанго - Инициализаторы объектов lomaxx
- Форматировать строки Дэвид в Дакоте
- Методы расширения marxidad
-
partialметоды Джон Эриксон - Директивы препроцессора John Asbeck
-
DEBUGпредпроцессорная директива Роберт Дургин - Перегрузка оператора SefBkn
- Введите inferrence chakrit
- Булевы операторы взятые на следующий уровень Роб Гоф
- Передать значение типа переменной как интерфейса без бокса Roman Boiko
- Программно определить объявленный тип переменной Roman Boiko
- Статические конструкторы Крис
- Легко на глаза/сжатое ORM-сопоставление с использованием LINQ roosteronacid
-
__arglistby Zac Bowling
Возможности Visual Studio
- Выберите блок текста в редакторе Himadri
- Фрагменты DannySmurf
Структура
-
TransactionScopeот KiwiBastard -
DependantTransactionот KiwiBastard -
Nullable<T>IainMH -
MutexДиаго -
System.IO.Pathageektrapped -
WeakReferenceХуан Мануэль
Методы и свойства
-
String.IsNullOrEmpty()метод KiwiBastard -
List.ForEach()метод KiwiBastard -
BeginInvoke(),EndInvoke()методы Будет ли декан -
Nullable<T>.HasValueиNullable<T>.Valueсвойства Rismo -
GetValueOrDefaultметод Джон Шихан
Советы и рекомендации
- Хороший метод для обработчиков событий Andreas H.R. Nilsson
- Сравнение с верхним регистром John
- Доступ к анонимным типам без отражения dp
- Быстрый способ ленивого создания свойств коллекции Будет
- JavaScript-подобные анонимные встроенные функции roosteronacid
Другие
- netmodules kokos
- LINQBridge Duncan Smart
- Параллельные расширения от Joel Coehoorn