C# - 如何防止引用类成员?

Ash*_*can 4 c#

我有一个类(myClass)包含一个私有类成员(类型为myData的currentData).我有一个属性(CurrentData),允许"获取"该成员.我想允许用户调用currentData上的函数,但是阻止他们对它进行外部引用.例如.

myClass a = new myClass();

// This is OK
a.CurrentData.somefunc();

// This is what I dont want
myData m = new myData();
m = a.CurrentData;
// ... some time passes here...
m.someFunc();
Run Code Online (Sandbox Code Playgroud)

虽然我理解他们引用相同的对象.由于内部成员可能会意外更改,因此我不希望将我的课程之外的引用保留给内部成员.

这可能吗?我已经离开了c#这么久我不记得它是如何工作的!

D S*_*ley 9

没有办法

a.CurrentData.somefunc();
Run Code Online (Sandbox Code Playgroud)

合法但是

m = a.CurrentData;
Run Code Online (Sandbox Code Playgroud)

非法. a.CurrentData.somefunc(); 本质上返回一个内联引用a.CurrentData,然后调用somefunc()该引用.

如果要阻止对内部对象的引用,则必须将方法添加到包含的类,然后将其传递给包含的对象:

public void DoSomeFuncWithCurrentData()
{
   this.currentData.someFunc();
}

myClass a = new myClass();

a.DoSomeFuncWithCurrentData();
Run Code Online (Sandbox Code Playgroud)