public void ApplyByValDoesNotChangeReceiver() { var sam = new PersonVal { Name = "Sam", Age = 20 }; sam .Apply(x => { x.Age++; }) .ShouldBe(new PersonVal { Name = "Sam", Age = 20 }); var bob = new PersonRef { Name = "Bob", Age = 20 }; bob.Apply(x => { x.Name = "Rob"; x.Age += 1; }) .ShouldBe(bob); bob.Name.ShouldBe("Rob"); bob.Age.ShouldBe(21); }
public void ApplyByRefChangesReceiver() { var sam = new PersonVal { Name = "Sam", Age = 20 }; sam .Apply((ref PersonVal x) => { x.Age++; }) .ShouldBe(new PersonVal { Name = "Sam", Age = 21 }); var bob = new PersonRef { Name = "Bob", Age = 20 }; var rob = bob.Apply((ref PersonRef x) => { x = new PersonRef { Name = "Rob", Age = x.Age + 1 }; }); rob.ShouldNotBe(bob); rob.Name.ShouldBe("Rob"); rob.Age.ShouldBe(21); }