Сообщение Re[2]: .NET 10 улучшения от 04.05.2025 8:36
Изменено 04.05.2025 12:24 karbofos42
Re[2]: .NET 10 улучшения
Здравствуйте, Serginio1, Вы писали:
S>Thus, C# 14 introduces extension blocks.
Какая же дичь... Какой-то блок внутри класса, чтобы сэкономить на спичках.
Не знаю насколько реализуемо, но удобнее было бы что-то типа:
Их этот блок extension внутри класса как-то так себе выглядит и больше походит на высасывание синтаксического сахара, чтобы было.
S>Null-conditional assignment
Тоже как-то такое себе. По-моему это не такой уж частый случай, чтобы нужно было оптимизировать в плане написания.
А вот с поисками багов подозреваю, что будут проблемы.
Имелся опыт на проекте, где любили наркоманские свойства вида:
и:
Меня это дико бесило и переделывать нормально, где дотягивались руки.
Тут конечно не такая наркомания, но сомневаюсь, что предлагаемая конструкция будет правильно читаться и не получится так, что ей просто NRE заглушится и ошибка тихо улетит куда-то дальше.
S>Thus, C# 14 introduces extension blocks.
Какая же дичь... Какой-то блок внутри класса, чтобы сэкономить на спичках.
Не знаю насколько реализуемо, но удобнее было бы что-то типа:
public static class Extensions extend IEnumerable<int>
{
public IEnumerable<int> WhereGreaterThan(int threshold)
=> this.Where(x => x > threshold);
public bool IsEmpty
=> !this.Any();
}
}Их этот блок extension внутри класса как-то так себе выглядит и больше походит на высасывание синтаксического сахара, чтобы было.
S>Null-conditional assignment
Тоже как-то такое себе. По-моему это не такой уж частый случай, чтобы нужно было оптимизировать в плане написания.
А вот с поисками багов подозреваю, что будут проблемы.
Имелся опыт на проекте, где любили наркоманские свойства вида:
public int Value
{
get { CalcValue(); }
set {}
}и:
public int Value
{
get { return _value; }
set
{
if (value < 0) return;
_value = value;
}
}Меня это дико бесило и переделывать нормально, где дотягивались руки.
Тут конечно не такая наркомания, но сомневаюсь, что предлагаемая конструкция будет правильно читаться и не получится так, что ей просто NRE заглушится и ошибка тихо улетит куда-то дальше.
Re[2]: .NET 10 улучшения
Здравствуйте, Serginio1, Вы писали:
S>Thus, C# 14 introduces extension blocks.
Какая же дичь... Какой-то блок внутри класса, чтобы сэкономить на спичках.
Не знаю насколько реализуемо, но удобнее было бы что-то типа:
Их этот блок extension внутри класса как-то так себе выглядит и больше походит на высасывание синтаксического сахара, чтобы было.
S>Null-conditional assignment
Тоже как-то такое себе. По-моему это не такой уж частый случай, чтобы нужно было оптимизировать в плане написания.
А вот с поисками багов подозреваю, что будут проблемы.
Имелся опыт на проекте, где любили наркоманские свойства вида:
и:
Меня это дико бесило и переделывал нормально, где дотягивались руки (периодически выплывали баги, т.к. разработчики по привычке не смотрели что у свойства пустой сеттер или он не всегда значения меняет, а потом удивлялись чего это они записывают в него одно значение, а фактически оказывается другое).
Тут конечно не такая наркомания, но сомневаюсь, что предлагаемая конструкция будет правильно читаться и не получится так, что ей просто NRE заглушится и ошибка тихо улетит куда-то дальше.
S>Thus, C# 14 introduces extension blocks.
Какая же дичь... Какой-то блок внутри класса, чтобы сэкономить на спичках.
Не знаю насколько реализуемо, но удобнее было бы что-то типа:
public static class Extensions extend IEnumerable<int>
{
public IEnumerable<int> WhereGreaterThan(int threshold)
=> this.Where(x => x > threshold);
public bool IsEmpty
=> !this.Any();
}
}Их этот блок extension внутри класса как-то так себе выглядит и больше походит на высасывание синтаксического сахара, чтобы было.
S>Null-conditional assignment
Тоже как-то такое себе. По-моему это не такой уж частый случай, чтобы нужно было оптимизировать в плане написания.
А вот с поисками багов подозреваю, что будут проблемы.
Имелся опыт на проекте, где любили наркоманские свойства вида:
public int Value
{
get { CalcValue(); }
set {}
}и:
public int Value
{
get { return _value; }
set
{
if (value < 0) return;
_value = value;
}
}Меня это дико бесило и переделывал нормально, где дотягивались руки (периодически выплывали баги, т.к. разработчики по привычке не смотрели что у свойства пустой сеттер или он не всегда значения меняет, а потом удивлялись чего это они записывают в него одно значение, а фактически оказывается другое).
Тут конечно не такая наркомания, но сомневаюсь, что предлагаемая конструкция будет правильно читаться и не получится так, что ей просто NRE заглушится и ошибка тихо улетит куда-то дальше.