using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
public class Todo
{
public int Id { get; set; }
public string Name { get; set; }
}
public static void ObjectSwap(ref Todo a, ref Todo b)
{
Todo taskTemp = a;
a = b;
b = taskTemp;
}
static void Main(string[] args)
{
Todo taskOne = new Todo{ Id = 1, Name = "One" };
Todo taskTwo = new Todo{ Id = 2, Name = "Two" };
ObjectSwap(ref taskOne, ref taskTwo);
Console.ReadKey();
}
}
}
有人可以告诉我这段代码的图吗?因为如果创建一个临时对象,我感到困惑,然后将其指向无论a指向哪个地址,然后将a的指针更改为b,然后将b更改为temp
OR
它不是更改地址而是地址的内容吗?
这两个中哪个看起来更合乎逻辑?我只想知道它是如何在后台运行的,它是更改指针还是引用还是更改引用内的内容...
编辑 这个怎么样?该代码的图表正确吗?
public static void swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
static void Main(string[] args)
{
int x = 1;
int y = 2;
swap(ref x, ref y);
Console.WriteLine(x);
Console.WriteLine(y);
Console.ReadKey();
}
那么更改数据而不是更改指针?