我有下面的代碼通過引用傳遞不工作
public interface IEntity
{
// Properties
int Id { get; set; }
}
public class Container : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Command
{
public void ApplyCommand(ref IEntity entity)
{
Container c = new Container() { Id = 20 };
entity = c;
}
}
[TestFixture]
public class ReferenceTest
{
[Test]
public void Casting_ByRef_Not_ReturningValue()
{
Container c= new Container();
IEntity entity = c;
new Command().ApplyCommand(ref entity);
Assert.AreEqual(c.Id, 20);
}
}
測試失敗,不應該通過引用傳遞允許對象引用的變化?
它是.AreEqual失敗還是失敗與CCE(類別轉換異常)?我知道這可能聽起來很奇怪,但試着做一些Console.WriteLine來看看事情發生了什麼地方。 – Woot4Moo 2009-11-20 18:00:02
而不是WriteLines,看看TestRunner(www.testdriven.net或rehsarper),它允許您在Debug模式下從IDE內運行測試。 – tobsen 2009-11-20 18:04:16
記住,「ref」並不意味着「通過參考」。它意味着「該方法的參數是對另一個變量的引用(即別名)」。 – 2009-11-20 22:52:10