I have some simple methods that follow a pattern like this:
(original C# code)
using RectDouble = PaintDotNet.Rendering.RectDouble;
using Rect = System.Windows.Rect;
public static unsafe RectDouble FromRect(Rect rect)
{
return *((RectDouble*)&rect);
}
And they show up like this in .NET Reflector:
public static unsafe RectDouble FromRect(Rect rect)
{
return (RectDouble) ((IntPtr) &rect);
}
This C# code doesn't even work -- it's definitely not some kind of syntactic-sugary equivalent

Here's the IL that Reflector shows me too:
.method public hidebysig static valuetype [PaintDotNet.Base]PaintDotNet.Rendering.RectDouble FromRect(valuetype [WindowsBase]System.Windows.Rect rect) cil managed
{
.maxstack 8
L_0000: ldarga.s rect
L_0002: conv.u
L_0003: ldobj [PaintDotNet.Base]PaintDotNet.Rendering.RectDouble
L_0008: ret
}
Both Rect and RectDouble are structs with the same layout of { double x; double y; double width; double height; }. You can see RectDouble by disassabling PaintDotNet.Base.dll in the latest release of Paint.NET.
(original C# code)
And they show up like this in .NET Reflector:
This C# code doesn't even work -- it's definitely not some kind of syntactic-sugary equivalent
Here's the IL that Reflector shows me too:
Both Rect and RectDouble are structs with the same layout of { double x; double y; double width; double height; }. You can see RectDouble by disassabling PaintDotNet.Base.dll in the latest release of Paint.NET.