Remix.run Logo
▲ afdbcreid a day ago

The most problematic missing feature for both C# and Go is interior pointers. But there are many others.

▲fweimer 21 hours ago | parent [-]

I thought that C# does not have escaping interior pointers, unlike Go. Last time I looked at the CLR, I couldn't find support for interior pointers.

▲debugnik 18 hours ago | parent | next [-]

Only so-called "ref" (and "out") variables/returns/fields can point to the inside of an object. These follow some borrow-checking rules so they can also point into stack variables, thus only ref-like types like Span<T> can hold ref and ref-like fields, and these are always rooted in the stack. But refs into the inside of a class type can escape the function, because they can keep the object alive.

▲afdbcreid 19 hours ago | parent | prev [-]

It does but only on the stack, known as `ref struct`. E.g. `Span<T>` is an interior pointer, and this is extremely common in modern C#.