Я искал встроенный атрибут, чтобы указать, что тип является неизменным, и я нашел только System.ComponentModel.ImmutableObjectAttribute.
Используя Reflector, я проверил, где он использовался, и кажется, что единственный открытый класс, который использует его, это System.Drawing.Image... WTF? Он мог бы использоваться для string, int или любого из примитивных типов, но Image определенно не является неизменным, есть много способов изменить его внутреннее состояние (например, с помощью метода Graphics или Bitmap.SetPixel).
Таким образом, единственный класс в BCL, который явно объявлен как неизменяемый, является изменяемым! Или я что-то упустил?