如果参数是对象的引用,异步调用是否会传递引用或对象的副本(通过编组)?
答案 0 :(得分:2)
如果参数是对象的引用(意味着引用类型),那么传递给该方法的是引用。但是,使用ref关键字传递的值类型不是这种情况。本文有相关的例子(图13和14):http://msdn.microsoft.com/en-us/magazine/cc301332.aspx
编组涉及在应用程序域之外进行通信,因此它与异步调用的委托本身无关。
答案 1 :(得分:0)
为什么不自己编写小样本并查看?
(我相信“参考”就是答案。)
答案 2 :(得分:0)
据我所知,只是通过异步调用委托来进行对象编组。这是一些代码,用于显示异步委托调用,传递对象引用。
public class Car
{
public string Model { get; set; }
}
public delegate void TransformHandler(Car car);
public static void Transform(Car car)
{
car.Model = "Holden";
}
static void Main(string[] args)
{
Car car = new Car();
car.Model = "Ford";
new TransformHandler(Transform).BeginInvoke(car, null, null);
Thread.Sleep(100);
Console.WriteLine(car.Model); // Prints "Holden", so it wasn't marshalled
}