//
// 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 CLRUnleashed
{
	public struct Point
	{
		// Zdarzenie używane przez klienta w celu powiadomienia
		// o zmianie elementów listy:
		private int x;
		private int y;
		public Point(int x, int y)
		{
			this.x = x;
			this.y = y;
		}
		public int X
		{
			get
			{
				return x;
			}
			set
			{
				x = value;
			}
		}
		public int Y
		{
			get
			{
				return y;
			}
			set
			{
				y = value;
			}
		}
		public Point Coordinate
		{
			get
			{
				return this;
			}
			set
			{
				x = value.x;
				y = value.y;
			}
		}
	}
	/// <summary>
	/// Podsumowanie dla Properties.
	/// </summary>
	class Properties
	{
		/// <summary>
		/// Główny punkt wejścia dla aplikacji.
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			Point p = new Point(1, 2);
			Console.WriteLine("X: {0} Y: {1}", p.X, p.Y);
		}
	}
}
