Как по мне, так неплохо конкурирует. Пробовал писать небольшой проект на Cordova + Typescript в VS Code. После студии непривычно, конечно, но вполне удобно. Навигация, автокомплит, git. Запускается быстро, ничего лишнего, тормозов нет.
Скорее всего. Еще ref плохо совместим с auto property, т.к. можно сделать ref на поле, но нельзя на свойство. Хотя можно, наверное, добавить специальную обработку ссылок на авосвойства в компилятор.
Это не совсем эквивалентно, наверное я не очень понятно написал.
Хотелось бы, чтобы а и b могли быть переменными, а не просто именованными полями кортежа.
Уже, только не для всех. «Пролы и животные свободны».
Который государство не может «разжать», очевидно же.
my.ChangeMe(1, 2, true, «Data») = 123;
Этак и до Dшного unified function call syntax недалеко.
public static class Ext
{
public static HashSet ToHashSet<TSrc, TDest>(this IEnumerable source, Func<TSrc, TDest> selector)
{
return new HashSet(source.Select(selector));
}
}
internal class Program
{
private static void Main(string[] args)
{
var anon = new[]
{
new {A = 1, Attachment = new {B = 2}},
new {A = 1, Attachment = new {B = 3}},
new {A = 1, Attachment = new {B = 2}}
};
var set = anon.ToHashSet(a => a.Attachment);
}
}
Хотелось бы, чтобы а и b могли быть переменными, а не просто именованными полями кортежа.
// Было
string result;
if (myMap.TryGetValue(«123», out result)) { Console.WriteLine(result); }
// Могло бы
if (myMap.TryGetValue(«123», var out result)) { Console.WriteLine(result); }
Вообще, не могу придумать сценарий использования возвращения по ссылке.
var tuple = (1, 2);
var (a, b) = tuple;
Console.WriteLine($«a={a}, b={b}»);
// a=1, b=2
Паттерн-матчинг, надеюсь, будет не только с выводом типов работать. Там деструктурирование тоже не помешало бы.