Я попробовал это
class Program
{
static void Main(string[] args)
{
int x = 3;
int y = 6;
Console.Write(string.Format("before swap x={0} y={1}", x, y));
Swap(x, y);
Console.Write(string.Format("after swap x={0} y={1}", x, y));
Console.ReadKey();
}
static public unsafe void Swap(int a, int b)
{
int* ptrToA = &a;
int* ptrToB = &b;
int c = a;
*ptrToB = c;
*ptrToB = *ptrToA;
}
}
И полностью забыл, что int
s передаются по значению, и нет никакого способа, которым я могу взять указатель чего-то, что на самом деле COPIED от вызывающего к вызываемомустек.
так что он не работает
Так что, кажется, вместо того, чтобы быть умнее, я просто потратил немного времени, но все равно хочу поделиться этим с вами :)