Jak prawidłowo podkreślić, group
nie jest zarezerwowanym kluczowe (język projektanci starają się nie wprowadzać nowych zastrzeżonych słów kluczowych, gdy dodać nowe funkcje do języka, aby nie złamać istniejących programów). Jest to jednak słowo kluczowe: staje się słowem kluczowym w wyrażeniach zapytań LINQ. Resharper sugeruje zmianę nazwy danej zmiennej, aby uniknąć niejednoznaczności, które wynikłyby, gdyby ta zmienna była używana w wyrażeniach zapytań.
Z language specification:
7.16.1 Ambiguities in query expressions
Query expressions contain a number of “contextual keywords”, i.e., identifiers that have special meaning in a given context. Specifically these are from, where, join, on, equals, into, let, orderby, ascending, descending, select, group and by. In order to avoid ambiguities in query expressions caused by mixed use of these identifiers as keywords or simple names, these identifiers are considered keywords when occurring anywhere within a query expression. For this purpose, a query expression is any expression that starts with “from identifier” followed by any token except “;”, “=” or “,”.
Jeśli próbował wykonać następujące czynności, co można uzyskać błąd kompilatora:
var filteredParis = from pair in group.Pairs // group is now treated as a keyword
select pair;
Tak, to pozwala na użycie Zarezerwowane (nie zachował się) słowa kluczowego , ale jest także dozwolone przed _any_ nazwą zmiennej. Dlaczego resharper sugeruje to, jest inne pytanie, chociaż klauzula LINQ [grupa] (http://msdn.microsoft.com/en-us/library/bb384063.aspx) jest dobrym kandydatem. – Oded
'group' jest kontekstowym słowem kluczowym w języku C#. Zobacz [MSDN] (http://msdn.microsoft.com/en-us/library/x53a06bb.aspx) –
'z grupy w grupie grupy filtersPairs według grupy. Something' –