Неизменный объект может быть определен как объект, состояние которого не может быть изменен после того, как created.The наиболее широко используется неизменная объект, безусловно, Струнные object.Immutable объекты полезны, когда безопасность потока вызывает беспокойство и/или когда экземпляр объекта должен быть доступен за пределами вашего кода в режиме только для чтения.
Преимущества:
- Потокобезопасность
- Это безопасно передать ссылку неизменяемой объекта за пределами класса без риска того, что данные могут быть изменены
Недостатки :
Как использовать:
using ImmutableByteArray = System.ImmutableArray<byte>;
using ImmutableCharArray = System.ImmutableArray<char>;
Неизменного массив также может быть создано из изменяемого массива как ..
ImmutableByteArray array1 = new ImmutableByteArray(new byte[] { 0, 1, 2, 3 });
ImmutableCharArray string = new ImmutableCharArray("test".ToCharArray());
Мы можем создать неизменяемый массив из другога неизменяемый массив.
ImmutableByteArray array2 = new ImmutableByteArray(new byte[] { 0, 1, 2, 3 });
ImmutableByteArray array3 = array1 + array2;
В этом случае array3 не потребляет дополнительную память.
ImmutableArray поддерживает перечисление. Так использовать как ..
foreach (byte b in array1)
Console.Write(b + " ");
А может реализовать ICloneable интерфейс ..
array5 = array1.Clone();
ImmutableArray также отменяет и реализует Equals() и '==' и '! =' Операторы.
Console.WriteLine("array1 equals array2: {0}", (array1.Equals(array2)); //same as array1 == array2
Пока вы можете использовать выше строки кода в случае array1! = Array2 так же, как ! Equals().
Неизменяемые средства неизменяемые FYI – FabianCook
Вы следили за ссылками от Nuget [здесь] (http://blogs.msdn.com/b/bclteam/archive/2012/12/18/preview-of-immutable-collections- выпущен-на-nuget.aspx)? –
Таким образом, это касается некоторых случаев использования в «Почему я должен использовать неизменность?». раздел. Какое дополнительное «когда» вам нужно? –