Frank... This is pretty obscure behaviour so don't sweat it.
using System;
namespace TestSwap
{
abstract class Drawable
{
abstract public void DrawMe();
}
class Circle : Drawable
{
public override void DrawMe()
{
System.Console.WriteLine("Circle");
}
}
class Square : Drawable
{
public override void DrawMe()
{
System.Console.WriteLine("Square");
}
}
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static public void SwapByValue(Drawable d1, Drawable d2)
{
Drawable temp= d1;
d1 = d2;
d2= temp;
}
static public void SwapByRef(ref Drawable d1, ref Drawable d2)
{
Drawable temp= d1;
d1 = d2;
d2= temp;
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
Drawable wasCircle= new Circle();
Drawable wasSquare= new Square();
wasCircle.DrawMe(); // Circle
wasSquare.DrawMe(); // Square
SwapByValue(wasCircle, wasSquare); // fails
wasCircle.DrawMe(); // Circle
wasSquare.DrawMe(); // Square
SwapByRef(ref wasCircle, ref wasSquare); // succeeds
wasCircle.DrawMe(); // Square
wasSquare.DrawMe(); // Circle
System.Console.ReadLine();
}
}
}
Regards,
Jeff
You're going to have to provide an example as I do not understand what
you are referring to.<