Информация об изменениях

Сообщение Re[28]: Welcome to C# 9.0 от 17.09.2020 14:02

Изменено 17.09.2020 14:07 Silver_S

Re[28]: Welcome to C# 9.0
Здравствуйте, rameel, Вы писали:

S_S>>
S_S>>struct S
S_S>>{
S_S>>    public S(int i) { Prop = i; }
S_S>>    public /*readonly*/ int Prop { get; }
S_S>>}

S_S>>static int Func(in S p)
S_S>>{
S_S>>    int sum = 0;
S_S>>    for (int i = 0; i < 1000_000_000; i++) 
S_S>>        sum = p.Prop;
S_S>>    return sum;
S_S>>}
S_S>>


R>На заметку, в твоем примере, что с readonly что без, не будет никакого клонирования, так как автосвойство и так получает такой модификатор


вот это и есть ужос:
1) Почему тогда у меня одинаково тормозят для "in" варианты и с автосвойствами и ручными.
2) Если у тебя C# 8, и по другому работает. А у меня предыдущая версия, так работает (readonly только на struct можно ставить). В любом случае так не должно быть — ненадежная фича.
3) Понятно, что ничего не упадет. Но "in" ввели для экономии на клонированиях. Если вместо этого в 1 млрд больше клонирований, то это уже можно считать багом.
Re[28]: Welcome to C# 9.0
Здравствуйте, rameel, Вы писали:

S_S>>
S_S>>struct S
S_S>>{
S_S>>    public S(int i) { Prop = i; }
S_S>>    public /*readonly*/ int Prop { get; }
S_S>>}

S_S>>static int Func(in S p)
S_S>>{
S_S>>    int sum = 0;
S_S>>    for (int i = 0; i < 1000_000_000; i++) 
S_S>>        sum = p.Prop;
S_S>>    return sum;
S_S>>}
S_S>>


R>На заметку, в твоем примере, что с readonly что без, не будет никакого клонирования, так как автосвойство и так получает такой модификатор


вот это и есть ужос:
1) Почему тогда у меня одинаково тормозят для "in" варианты и с автосвойствами и ручными.
2) Если у тебя C# 8, и по другому работает. А у меня C# 7.3, так работает (readonly только на struct можно ставить). В любом случае так не должно быть — ненадежная фича.
3) Понятно, что ничего не упадет. Но "in" ввели для экономии на клонированиях. Если вместо этого в 1 млрд больше клонирований, то это уже можно считать багом.