Size: a a a

2021 April 05

DB

Dmitry Babushkin in pro.net
WhiteBlackGoose
А что есть fixed структуры? Чем обычные не fixed?
Тем что раньше ты мог объявить fixed byte array[50], но не мог fixed MyStruct array[50]
источник

IC

Ilya Chernoudov in pro.net
Dmitry Babushkin
Тем что раньше ты мог объявить fixed byte array[50], но не мог fixed MyStruct array[50]
вроде же в Unsafe для этого что то есть 🧐
источник

DB

Dmitry Babushkin in pro.net
Ну, фигачишь массив байт, а потом кастишь его к указателю на структуру. :D
источник

W

WhiteBlackGoose in pro.net
Дела. Никогда не надо было, не знал, что для своей структуры нельзя. Наверное не хотят, чтобы ты мог случайно managed type повредить
источник

DB

Dmitry Babushkin in pro.net
WhiteBlackGoose
Дела. Никогда не надо было, не знал, что для своей структуры нельзя. Наверное не хотят, чтобы ты мог случайно managed type повредить
Вроде логично, но у нас уже есть where unmanaged констрейнт.
источник

AK

Alex Kiev in pro.net
EgorBo
просто в пределах грубо говоря 32к байт или сколько там
А если у меня огромный массив интов оно мне тоже по пальцам даст?
источник

W

WhiteBlackGoose in pro.net
Dmitry Babushkin
Вроде логично, но у нас уже есть where unmanaged констрейнт.
Не, я про то, что у тебя в структуре могут быть поля managed. Хотя нет, я какую-то херню несу
источник

DB

Dmitry Babushkin in pro.net
WhiteBlackGoose
Не, я про то, что у тебя в структуре могут быть поля managed. Хотя нет, я какую-то херню несу
Я и говорю - не могут. :)
источник

DB

Dmitry Babushkin in pro.net
where T : unmanaged
источник

E

EgorBo in pro.net
Alex Kiev
А если у меня огромный массив интов оно мне тоже по пальцам даст?
это не массив
источник

E

EgorBo in pro.net
fixed byte[100] - это 100 байтных полей
источник

W

WhiteBlackGoose in pro.net
Dmitry Babushkin
where T : unmanaged
Ты же не можешь наложить такое ограничение на *поля* типа, только на сам тип
источник

DB

Dmitry Babushkin in pro.net
Раньше констрейнта не было, но сама проверка на managed/unmanaged структуры уже много лет существует, так что послать любителя засунуть строку в структуру и попытаться без маршала влезть в ансейф сыпалась без проблем.
источник

DB

Dmitry Babushkin in pro.net
WhiteBlackGoose
Ты же не можешь наложить такое ограничение на *поля* типа, только на сам тип
А что, как ты думаешь, означает where T : unamanged, и для чего он нужен? :3
источник

AK

Alex Kiev in pro.net
EgorBo
fixed byte[100] - это 100 байтных полей
Ну ок, а я объявлю такой же инт на 100к элементов, в страницу не влезет, чё дальше?
источник

W

WhiteBlackGoose in pro.net
Dmitry Babushkin
А что, как ты думаешь, означает where T : unamanged, и для чего он нужен? :3
Ну да, можешь. Туплю чет. ). Тогда вообще никаких мыслей, почему так не сделали
источник

W

WhiteBlackGoose in pro.net
Может быть сложности учитывать ExplicitLayout
источник

DB

Dmitry Babushkin in pro.net
WhiteBlackGoose
Ну да, можешь. Туплю чет. ). Тогда вообще никаких мыслей, почему так не сделали
Да нормально, ты ж не пилишь каждый день unsafe. :)
источник

DB

Dmitry Babushkin in pro.net
WhiteBlackGoose
Может быть сложности учитывать ExplicitLayout
Хз. Кажется, что просто нафиг никому не нужно, и ради отдельных извращенцев никто не хочет париться.
источник

AT

Alexey Tkachenko in pro.net
EgorBo
я думаю надо ли мне защищать юзера тут
юзер явно сказал, что у него unsafe и ног не жалко
максимум диагностики можно какие-то показать
прикол в том, что такое поведение может быть by design
при интеропе с си может понадобится zero length array например
мало ли, может такой тип нужен для каста памяти и юзер лучше знает
источник