C# 无法更改方法中参数的引用对象

C# 无法更改方法中参数的引用对象,c#,C#,我想用这种方法交换两名员工,但不起作用。虽然在参数上加上ref关键字后它可以工作,但我想知道为什么前者不能工作。因为C#中的每个对象都是引用类型,所以我认为它应该可以工作。我期待着你的帮助,谢谢 void Swap(Empolyee lhs, Empolyee rhs) { Empolyee tmp = lhs; lhs = rhs; rhs = tmp; } 然后打电话: void Swap(ref Empolyee lhs,

我想用这种方法交换两名员工,但不起作用。虽然在参数上加上ref关键字后它可以工作,但我想知道为什么前者不能工作。因为C#中的每个对象都是引用类型,所以我认为它应该可以工作。我期待着你的帮助,谢谢

    void Swap(Empolyee lhs, Empolyee rhs) {
        Empolyee tmp = lhs;
        lhs = rhs;
        rhs = tmp;
    }
然后打电话:

 void Swap(ref Empolyee lhs, ref Empolyee rhs) {
    Empolyee tmp = lhs;
    lhs = rhs;
    rhs = tmp;
 }

谢谢,我知道这个方法应该可以工作,但我的问题是:既然参数已经是引用类型,为什么我们还要加上“ref”关键字。当你把任何参数传递给一个方法时,你只是传递了一个副本。引用类型只是指向较大数据段的内存位置值。因此,实际上,您传递的是位置的副本,它不会影响方法外部的变量。使用
ref
表示您正在传递实际变量,对该变量所做的任何更改都会反映在范围之外。zenwalker在上面发布的链接包含了关于这种行为的更多信息。这是否回答了你的问题??
  Swap(ref lhs, ref  rhs);