如何使具有类实例的变量对外部类只读,但其模因是读/写的
本文关键字:写的 只读 实例 何使具 变量 对外部 | 更新日期: 2023-09-27 17:57:17
我有这样的代码:
struct Three
{
public int Number;
}
class One
{
public Three three;
public One(){three = new Three();}
}
class Two
{
private One test = new One();
public void SomeFunction()
{
test.three.Number = 5; // This works fine
}
}
但是我只需要允许类 One 能够直接写入 three 变量(要做这样的事情 three = new Three()),所以类 2 不能这样做:test.three = new Three(); 但它应该能够做这个测试.three.Number = 5;(就像在该结构的实例中的更改值中一样)所以我这样做了:
struct Three
{
public int Number;
}
class One
{
public Three three {private set; get;}
public One(){three = new Three();}
}
class Two
{
private One test = new One();
public void SomeFunction()
{
test.three.Number = 5; // This says i can't modify the return value because it is not a variable
}
}
public Three three { private set; get; }
是一个属性,Three
是一个Value-Type
(又名 Struct
),此属性的 get 返回它的副本,而不是对类 One
拥有的实例的实际引用。
所以你要么需要创建一个像test.three = new Three() { Number = 5 };
这样的新副本,并将private set
更改为public
;
或者将Three
更改为Class
,以便通过引用使用它,并能够通过引用get返回的实例来更改其属性。