Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
string s = $"r1={r1} r2={r2}";nameof будет подсвечен как ключевое слово, но среда разработки по-прежнему не знает, какое выражение допустимо в скобках и что с ним делать в случае рефакторинга.Переходное состояние языка, когда некоторые конструкции существуют в неутвержденном виде — крайне редкая и непродолжительная вещь. Если уж человек скачивает бета-версию попробовать, обычно он готов к тому, что что-то может не работать. Так что проблема сама по себе во многом надумана.
Не описывает ничего, кроме новых ключевых слов — за бортом оказываются операторы, интерполяция строк, новая семантика первичных конструкторов, инициализаторы свойств, инициализаторы словарей, в общем всё остальное.
Не решает ничего, кроме некорректной подсветки в тексте — тот же nameof будет подсвечен как ключевое слово, но среда разработки по-прежнему не знает, какое выражение допустимо в скобках и что с ним делать в случае рефакторинга.
Переносит ответственность с разработчиков среды и инструментов к ней на конечного пользователя, что в корне неверно.
Если вы серъезно считаете, что для новых фич языка программирования сложности C# можно сделать что-то типа «Add to user dictionary», то очень глубоко заблуждаетесь.
Зачем писать поддержку и тратить время того, что через месяц выбросят?
Тут скорее возникает вопрос зачем включать в релизную версию решарпера фичи из превью версии языка?
Маленький баг в «Use object initializer» вас смутил,
Насчет сомнений в фиче — я с вами согласен, ошибки в тулинге достаточно опасны и последствия могут быть печальными. Что еще тут сказать, верифицировать корректность IDE-тулинга еще не научились, значит будем просто чинить :)
Dictionary<string, int> dictionary3 = new Dictionary<string, int>();
dictionary3["X"] = 1;
dictionary3["Y"] = 2;
class D {
public int this[int i, int j] {
get { return 1; }
set { }
}
}
class C {
public static void Foo() {
D d = new D(){};
d[1,2] {caret}= 5;
}
}
public static class Roots
{
public const int Misc = 100;
public const int Managers = 200;
public const int SaleManagers = 200;
}
// ...
public static readonly Dictionary<int, string> KnownNames = new Dictionary<int, string>
{
{Misc, "xxx" },
{Managers, "yyy" },
{SaleManagers, "zzz" }
};SaleManagers не сменил id, после чего создание словаря падает с ошибкой. Анализатор может проверять описания словарей и подсвечивать, если есть дублирование ключей.
Resharper v9 и C# v6