По этой ссылке (уже размещено):
http://msdn.microsoft.com/en-us/library/s6938f28(VS.80).aspx
Передача ссылочного типа по значению показана ниже.
Ссылочный тип arr по значению передается в метод Change.
Любые изменения будут влиять на исходный элемент, если массиву не назначено новое место в памяти, и в этом случае изменение полностью локально для метода.
class PassingRefByVal
{
static void Change(int[] pArray)
{
pArray[0] = 888; // This change affects the original element.
pArray = new int[5] {-3, -1, -2, -3, -4}; // This change is local.
System.Console.WriteLine("Inside the method, the first element is: {0}", pArray[0]);
}
static void Main()
{
int[] arr = {1, 4, 5};
System.Console.WriteLine("Inside Main, before calling the method, the first element is: {0}", arr [0]);
Change(arr);
System.Console.WriteLine("Inside Main, after calling the method, the first element is: {0}", arr [0]);
}
}
В заключение, для более глубокого обсуждения см. Пост Джона Скита в этом вопросе:
Передача объектов по ссылке или значению в C #