Size: a a a

F# Flood: Be a cheif

2021 January 29

DS

Doge Shibu in F# Flood: Be a cheif
Если ты попробуешь сделать каст в свой интерфейс (не диспозабл), то ты получишь бокс в IL
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
Doge Shibu
Потому что именно для Disposable кодген одинаковый у вскх случаев и там будет не бокс, а            
IL_000c: constrained. A
IL_0012: callvirt instance void [System.Private.CoreLib]System.IDisposable::Dispose()
настоящий боксинг
        IL_0002: initobj A
       IL_0008: ldloc.0
       IL_0009: box A
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
Doge Shibu
Если ты попробуешь сделать каст в свой интерфейс (не диспозабл), то ты получишь бокс в IL
а этот кейс тут причём?
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
источник

DS

Doge Shibu in F# Flood: Be a cheif
Ilya Chernoudov
а этот кейс тут причём?
Потому что вся работа с IDisposable'ом + структурами явно зашита в компиль, чтобы не генерить бокс, который будет, если это преобразование кода делать наивно.

Это прям конкретный хак под это конкретное место, о котором напрямую в комменте и сказано.
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
Doge Shibu
Потому что вся работа с IDisposable'ом + структурами явно зашита в компиль, чтобы не генерить бокс, который будет, если это преобразование кода делать наивно.

Это прям конкретный хак под это конкретное место, о котором напрямую в комменте и сказано.
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
  IL_0000: nop
       IL_0001: ldarga.s item
       IL_0003: constrained. !!T
       IL_0009: callvirt instance void [System.Private.CoreLib]System.IDisposable::Dispose()
       IL_000e: nop
       IL_000f: ret
источник

DS

Doge Shibu in F# Flood: Be a cheif
Это тут причём?
источник

DS

Doge Shibu in F# Flood: Be a cheif
Это опять IDisposable
источник

DS

Doge Shibu in F# Flood: Be a cheif
Ты попробуй с любым другим интерфейсом
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
Doge Shibu
Это тут причём?
мой интерфейс, точно так же нет
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
Doge Shibu
Это опять IDisposable
public struct A:IA
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
какой диспозабл?
источник

DS

Doge Shibu in F# Flood: Be a cheif
Ilya Chernoudov
public struct A:IA
Только метод ты генеришь для T: IDisposable
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
Doge Shibu
Только метод ты генеришь для T: IDisposable
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
сорян
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
        IL_0000: nop
       IL_0001: ldarga.s item
       IL_0003: constrained. !!T
       IL_0009: callvirt instance void C/IA::Dispose()
       IL_000e: nop
источник

DS

Doge Shibu in F# Flood: Be a cheif
А это потому что тут generic метод без каста
источник

DS

Doge Shibu in F# Flood: Be a cheif
Ты попробуй явно каст сделать и увидешь результат
источник

IC

Ilya Chernoudov in F# Flood: Be a cheif
Doge Shibu
А это потому что тут generic метод без каста
я тебе показываю, что нету каста
источник