Можна визначати в класі наступні унарні операції:
 + - ! - ++ -- true false
  
 Синтаксис об'явника унарної операції:
  
 тип operator унарна_операція ( параметр )
  
 Приклади заголовків унарних операцій:
 public static int operator +(MyObject m )
 public static MyObject operator -- ( MyObject m )
 public static bool operator true(MyObject m )
  
 Параметр, переданий в операцію, повинен мати тип класу, для якого вона визначається. Операція повинна повертати:
 § для операцій +, - ! ~ величину будь-якого типу;
 § для операцій ++ -- величину типу класу, для якого вона відзначається;
 § для операцій true і false величину типу bool.
 Операції не повинні змінювати значення переданого ним операнда. Операція, що повертає величину типу класу, для якого вона визначається, повинна створити новий об'єкт цього класу, виконати з ним необхідні дії і передати його як результат.
 Префіксний і постфіксний інкременти не розрізняються.
 Як приклад удосконалимо приведений в лістингу 7.3 клас Safearray для зручної і безпечної роботи з масивом. До класу внесені наступні зміни:
 § доданий конструктор, що дозволяє ініціалізувати масив звичайним масивом або серією цілочисельних значень довільного розміру;
 § додана операція інкремента;
 § доданий допоміжний метод Print виведення масиву;
 § змінена стратегія обробки помилок виходу за межі масиву;
 § знята вимога, щоб елементи масиву приймали значення в заданому діапазоні.
 Текст програми приведений в лістингу 7.5.
  
 Лістинг 7.5. Визначення операції інкремента для класу
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
  
 namespace examp44
 {
 class SafeArray
 {
 public SafeArray(int size) // конструктор
 {
 a = new int[size];
 length = size;
 }
 public SafeArray(params int[] arr) //новий конструктор
 {
 length = arr.Length;
 a = new int[length];
 for (int i = 0; i < length; ++i) a[i] = arr[i];
 }
  
  
 public static SafeArray operator ++(SafeArray x) // ++
 {
 SafeArray temp = new SafeArray(x.length );
 for ( int i = 0; i < x.length; ++i )
 temp[i] = ++x.a[i] ;
 return temp;
 }
  
  
 public int this[int i] // індексатор
 {
 get
 {
 if ( i >= 0 && i < length ) return a[i];
 else throw new IndexOutOfRangeException(); // виключення
 }
 set
 {
 if (i >= 0 && i < length) a[i] = value;
 else throw new IndexOutOfRangeException(); // виключення
 }
 }
 public void Print(string name) // виведення на екран
 {
 Console.WriteLine(name + ": ");
 for (int i = 0; i < length; ++i)
 Console.Write("\t" + a[i]);
 Console.WriteLine();
 }
 int[] a; // закритий масив
 int length; // закрита розмірність
 }
  
 class Class1
 {
 static void Main()
 {
 try
 {
 int[] f = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
 SafeArray a1 = new SafeArray(f);
 a1.Print("Масив 1");
 a1++;
 a1.Print("Інкремент масиву 1");
 }
 catch (Exception e) // обробка виключення
 {
 Console.WriteLine(e.Message);
 }
 }
 }
 }