In C#, le proprietà sono membri che forniscono un meccanismo semplificato di lettura e scrittura dei campi di una classe.
Solitamente si utilizzano le proprietà per accedere ai campi privati (anche se possono essere utilizzati anche per campi pubblici), al posto dei metodi setter/getter (il tipico approccio di Java).

Vediamo un semplice esempio:

using System;

namespace test
{
	public class Time
	{
		private int seconds;

		public Time(){ }

		public int Seconds
		{
			get
			{
				return this.seconds;
			}
			set
			{
				if(value < 0 || value > 59)
				{
					throw new Exception(
						"I secondi devono trovarsi " +
						"in questo range: [0, 59]");
				}

				this.seconds = value;
			}
		}
	}
}

Da notare la parola chiave value, che indica il valore da settare.
A secondo dell’operazione da effettuare, verrà richiamato il blocco denotato come set o il blocco get.

Esempio di utilizzo:

using System;

namespace test
{
	public class PropTest
	{
		public static void Main(String[] args)
		{
			Time t = new Time();
			t.Seconds = 10;
			t.Seconds += 5;

			Console.WriteLine(t.Seconds);

			try
			{
				t.Seconds = 100;
			}
			catch(Exception ex)
			{
				Console.WriteLine(ex);
			}
		}
	}
}