Это пришло мне в голову после того, как я узнал следующее из этого вопроса:
where T : struct
Мы, разработчики С#, все знаем основы С#. Я имею в виду декларации, условные обозначения, циклы, операторы и т.д.
Некоторые из нас даже освоили такие вещи, как Generics, анонимный типы, lambdas, LINQ,...
Но каковы самые скрытые функции или трюки С#, которые даже поклонники С#, наркоманы, эксперты едва ли знают?
Вот раскрытые возможности:
Ключевые слова
-
yield
от Michael Stum -
var
by Майкл Стум -
using()
оператор kokos -
readonly
kokos -
as
Майк Стоун -
as
/is
Эд Свангрен -
as
/is
(улучшено) Rocketpants -
default
deathofrats -
global::
pzycoman -
using()
блокирует AlexCuse -
volatile
Якуб Штурк -
extern alias
Якуб Штурк
Атрибуты
-
DefaultValueAttribute
от Michael Stum -
ObsoleteAttribute
DannySmurf -
DebuggerDisplayAttribute
Stu -
DebuggerBrowsable
иDebuggerStepThrough
bdukes -
ThreadStaticAttribute
marxidad -
FlagsAttribute
Мартин Кларк -
ConditionalAttribute
AndrewBurns
Синтаксис
-
??
(coalesce nulls) оператор kokos - Знаки числа Ник Берарди
-
where T:new
Lars 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
-
__arglist
by Zac Bowling
Возможности Visual Studio
- Выберите блок текста в редакторе Himadri
- Фрагменты DannySmurf
Структура
-
TransactionScope
от KiwiBastard -
DependantTransaction
от KiwiBastard -
Nullable<T>
IainMH -
Mutex
Диаго -
System.IO.Path
ageektrapped -
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