2 liuci3234 liuci3234 于 2014.11.18 21:50 提问

C#对象赋值操作可以禁止么

C#对象时引用类型的,赋值操作后,一个对象的字段修改会导致另一个的对应字段的修改。可以禁止"="号操作避免这样的错误么?

6个回答

caozhy
caozhy   Ds   Rxr 2014.11.18 22:03

可以使用readonly修饰,或者通过get/set限制对象状态的修改,这里演示下后一种做法:
class User
{
public string UserName { get; private set; }
public int Age { get; private set; }
public User(string userName, int age) { UserName = userName; Age = age; }
}
这样只有对象构造的时候可以一次性指定值,之后就是只读的了。

q107770540
q107770540   Ds   Rxr 2014.11.19 09:05

对于属性,可以设置只读

对于对象,可以设置其构造函数为private

woainiliuliu
woainiliuliu   2014.11.18 22:23

不行,"="是赋值操作,如果对象为引用对象,则都是指向内存中的同一个地址。这个又不可以重载。你是设计上的问题吧。

yuwenge
yuwenge   2014.11.19 15:02

你别给他赋值不就行了。

duanzi_peng
duanzi_peng   Rxr 2014.11.19 18:54

可以使用类似 private readonly string name ="admin"; 设置属性的初始值。

joeyluo57
joeyluo57   2014.11.24 13:55

Class A
{
public string name{ get; private set; }
}

Csdn user default icon
上传中...
上传图片
插入图片