dotnet/roslyn
在 GitHub 查看Compiler should report CS0208 - "Cannot declare pointer to a managed object" when managed object pointer is returned from IL with type inferrence
Open
#33,041 建立於 2019年2月1日
Area-CompilersBughelp wanted
描述
Version Used: C# 7.2
Steps to Reproduce:
- Have this IL and compile it
.method public hidebysig static !!0* GetPointer<T>(
!!0 'value'
) cil managed
{
ldarga 0
conv.u
ret
}
- Call it from C# as such
object obj = new object();
var objPtr = <something>.GetPointer(obj);
Expected Behavior: CS0208 - "Cannot declare pointer to a managed object"
[or, a bit more of a stretch, allow managed type pointers, such as Exception*]
Actual Behavior:
Compiles and behaves like an actual object reference pointer. So objPtr->GetType() is legal and runs
IMPORTANT: This only works with that type inferrence, Without var it doesn't compile