gpt4 book ai didi

c# - 如何在没有类嵌套的情况下使一个类只能被另一个类访问?

转载 作者:行者123 更新时间:2023-12-02 10:51:09 25 4
gpt4 key购买 nike

我给出了以下代码示例:

public static class A
{
private static B _b;

public static B GetB
{
get
{
if(_b == null)
{
_b = B.load();
}
return _b;
}

}

public static void Save()
{
if(_b == null)
{
_b = B.load();
}
_b.Save()
}
}

public class B
{
public string Value{ get; set;}

public void Save()
{
//value is being save to somewhere
}

public static B load()
{
B b = new B();

// .....
//b.Value is loaded from somewhere
// ......
return b;
}
}

接下来是我需要解决的问题:

A.GetB.Value = "value";  // OK
B.Load().Value = "value"; // I need to prevent this

以上两行代码执行完全相同的操作,但是...

B.Load().Value 应该无法从除 A 类之外的任何其他位置访问

如果有人有想法,请告诉我...

谢谢

五人

最佳答案

基本上,您想要做的就是不要将类 B 嵌套在类 A 中,并且仍然让类 A 具有对 B 字段的独占访问权限。如果A和B是独立的类,这是违反封装的。

您正在寻找friend classes 。 C++ 中允许使用这些类型的类。 C# 不支持友元类,而与友元类最接近的是友元程序集。看这个post .

因此,如果您确实想要该功能,则需要按照其他人的建议将它们嵌套。

此外,如果您最终执行嵌套类解决方案。 Here是一种绝对漂亮的方式来处理嵌套类的私有(private)成员仅对其容器类的访问。虽然有点老套,但仍然...

关于c# - 如何在没有类嵌套的情况下使一个类只能被另一个类访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24941927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com