mutable和immutable之间有什么区别?
答
不可变的类型在实例化后无法更改。例如,字符串是不可变的。每次你想改变一个字符串的值时,都会创建一个新的实例。
答
Immutable表示“创建后无法修改”。
- 不可变的类型有一个构造函数和getters但不是setter。
- 一个可变类型也可以有setter。
不可变类型的一个例子是DateTime。方法AddMinutes
不修改对象 - 它创建并返回一个新的DateTime。
另一个例子是字符串。对于类似字符串的可变类,可以使用类StringBuilder
。
C#中没有关键字将类型声明为不可变。相反,您应该将所有成员字段标记为readonly
以确保它们只能在构造函数中设置。这将防止您意外修改其中一个字段,破坏不变性。
答
在函数式语言中使用的不可变变量。 使用术语变量是不合适的,功能程序员 更喜欢术语值。不变性
答
优点:
1线程安全
2共享
3更少的错误倾向
所以更喜欢不变性,如果你有选择。:)
答
使用参考
imaginationhunt.blogspot
IS STRING MUTABLE OR IMMUTABLE IN .NET?
易变:易变的手段,其状态在创建后是可以改变的。
不可变:不可变意味着其状态一旦创建就无法更改。
字符串对象是'不可变的',这意味着我们不能修改字符串中包含的字符,同时对字符串的操作也会产生修改版本,而不是修改字符串的字符。
错误,一个可以改变,另一个不可以!今天似乎是'特殊'问题的一天... – leppie 2010-09-28 08:40:57
不变性的种类:http://blogs.msdn.com/b/ericlippert/archive/2007/11/13/immutability-in-c-part-one -sinds-of-immutability.aspx – LukeH 2010-09-28 08:51:06
Thanks one and alla – 2010-09-28 08:51:23