//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
//  
using System;

namespace ComplexReferenceType 
{
//  class Complex 
	struct Complex 
	{
		public double real;
		public double imag;
	}
	class ProcessComplex 
	{
		public static void Process(Complex n) 
		{
			Console.WriteLine("Proces: {0},{1}", n.real, n.imag);
			n.real = 10;
			n.imag = 20;
		}
		public static void Main(String[] args) 
		{
			Complex c = new Complex();
			c.real = 1;
			c.imag = 2;
			Console.WriteLine("Przed procesem: {0},{1}", c.real, c.imag);
			Process(c);
			Console.WriteLine("Po zakończeniu procesu: {0},{1}", c.real, c.imag);
			c.real = 1;
			c.imag = 2;
			Complex d = c;
			Console.WriteLine("Przed zmianą: {0},{1}", c.real, c.imag);
			d.real = 30;
			d.imag = 40;
			Console.WriteLine("Po zmianie: {0},{1}", c.real, c.imag);
		}
	}
}
