c#中的只读对象需要什么?什么时候我们的对象在c#中是只读的?

c#中的只读对象需要什么?什么时候我们的对象在c#中是只读的?,c#,object,readonly,C#,Object,Readonly,我知道字段是只读的,或者什么时候字段可以是只读的,但我不明白为什么对象可以是只读的,或者什么时候我们可以在C#中将对象设置为只读的。 请帮助我理解这个概念。对象作为声明或构造函数的一部分进行初始化。对象被设置为只读的原因有很多,比如防止对象的初始值发生变化。通过使用一些魔法使对象不可变,使其成为“只读”。所以,你可以有这样的东西: public interface IMyROClass { string name { get; } } public class MyROClass :

我知道字段是只读的,或者什么时候字段可以是只读的,但我不明白为什么对象可以是只读的,或者什么时候我们可以在C#中将对象设置为只读的。 请帮助我理解这个概念。

对象作为声明或构造函数的一部分进行初始化。对象被设置为只读的原因有很多,比如防止对象的初始值发生变化。

通过使用一些魔法使对象不可变,使其成为“只读”。所以,你可以有这样的东西:

public interface IMyROClass
{
    string name { get; }
}

public class MyROClass : IMyROClass
{
    private string _name;
    public string name { get { return _name; } }
    public MyROClass(string name) { _name = name; }
}
public class MyClass
{ 
    private readonly MyROClass _myROClass; 
    public MyClass(MyROClass myROClass) { _myROClass = myROClass; } 
    public IMyROClass myROClass => _myROClass;
} 

C#中的“只读对象”对您来说是什么?我知道只读字段,您也知道,但我不知道这样命名的“只读对象”的概念。你说的是不变性吗?你能举个例子吗?转到回答你能给我们举个例子说明你所说的只读对象是什么意思吗?有
readonly
字段,即初始化后不能修改的字段。我猜您的
readonly
对象是指不可变对象,它(大致)指的是不改变其内部状态的对象。(将其视为一个包含所有
只读
字段或
get
只读属性的对象。)我感觉您描述了一个引用对象的只读字段。不确定这是否是OP所说的,因为他明确地取消了只读字段。您的接口声明无效。我确信这是一个属性,但正如所声明的,它是一个字段,在接口中是无效的。谢谢,感谢您的锐利目光。:)