Они обычно включают дженерики. Но некоторые методы с дженериками не имеют их, и не все дополнительные методы имеют их.
Они только что "были там" со дня один, мы все видели их; но я понял, что все еще не знаю то, что они имеют в виду, и я не могу найти ответ нигде. Теперь это действительно прослушивает меня. Google просто поднимает результаты, которые являются о XML и т.д.
Это официально документируется где-нибудь?Спасибо.
Править: Хорошо это является просто большим. Так как я просто создал учетную запись, чтобы сделать мое первое сообщение Переполнения стека, получить ответ для этого горящего вопроса; мне не разрешают разместить мою симпатичную фотографию Intellisense или создать новый тег "угловые скобки". Я люблю Переполнение стека, но... что приветствие!
Возможно, моя проблема состоит в том, что их на самом деле не называют "угловыми скобками"...??
Так или иначе я предполагаю, хотите ли Вы действительно видеть мой красивый снимок экрана, Вы могли бы вручную перейти в:
Увеличьте меня, таким образом, я могу включать его в сообщение, спасибо.;)
Эти методы являются общими.
Однако компилятор автоматически определяет параметр универсального типа из вызова метода, поэтому вам не нужно использовать скобки при вызове метода.
Например, если у вас есть IEnumerable
, следующие четыре оператора эквивалентны:
myNumbers.Count();
myNumbers.Count<int>();
Enumerable.Count(myNumbers);
Enumerable.Count<int>(myNumbers);
В первом и третьем вызовах компилятор выводит int
параметр, поскольку myNumbers
является IEnumerable
.
Метод расширения Count
объявлен (в System.Core.Dll) следующим образом:
public static int Count<TSource>(this IEnumerable<TSource> source);
они предназначены для дженериков. Когда вы используете функции, вам не всегда нужно вставлять их, потому что во многих случаях компилятор может понять это по контексту.
Это означает, что методы являются универсальными, т.е. они не зависят от типа.
Хорошая информация о типах Generics: http://msdn.microsoft.com/en-us/library/512aeb7t.aspx
Это сигнатуры универсального метода. Я предлагаю вам узнать о них больше.
Несколько интересных фактов о дженериках: во-первых, они не являются универсальными после компиляции. Все типы решены и высечены в камне до того, как вы запустите приложение. Во-вторых, компилятор часто может понять, что вы имеете в виду, поэтому вам не нужно говорить об этом явно. Например, если сигнатура метода - DoSomething
, вы можете вызвать этот метод, например DoSomething
или you можно опустить общий тип: DoSomething («со мной»)
. Это связано с тем, что компилятор смотрит на типы, переданные в метод как аргументы, и определяет параметр типа для метода. Потрясающие.
Книга Джона Скита C # in Depth подробно описывает обобщения и linq и многое проясняет для меня - я очень рекомендую ее.