gpt4 book ai didi

c# - 类特定常量是否应该包含在嵌套类中?

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:48 26 4
gpt4 key购买 nike

如果我在一个类中有彼此相关的常量,比如用于为 MyClass 写入/读取 Xml 文件的字符串,我应该将它们包装在 MyClass 内的嵌套类 Xml 中吗?或者只是定义它们而不用 MyClass 包装?如果将它们包装起来是个好主意,那么如果外部世界只能访问这些常量的一部分,例如只有 Xml.Name,其余的是 MyClass 将用于重新创建对象的 Xml 属性,我将如何设置我的嵌套类的保护级别是?

最佳答案

我将 nested-class 视为仅在另一个对象的上下文中才有意义的对象;并且其逻辑需要此其他对象的属性。鉴于此,我从来没有设计过我后来没有重构的 nested-class。我认为对 public nested-class 的感知需求是有问题的设计的危险信号。

无论如何,您的问题让我考虑它们是否有潜在用处。因此,即使我不会使用这种设计,它也可能适合您。

我确实想提到 const 应该只用于永不改变的东西。就像一天中的几个小时或光速一样。我无法从您的问题中准确判断,但类似 ​​Xml.Name 的内容似乎是可变的。我建议对这些属性使用 readonly。可能,static readonly 如果它们在所有实例中都是一致的。这将引导您远离 many pitfalls of const .

以下是我模拟的,用于演示我为您的设计推荐的内容:

public class MyClass
{
public string Title { get; set; }

Xml _xml;
public Xml MyXml
{
get { return _xml; }
set { _xml = value; }
}

public MyClass(string xmlName, object xmlAttributes)
{
_xml = new Xml(xmlName, xmlAttributes);
}

public class Xml
{
private readonly string _name;
public string Name
{
get { return _name; }
}

private readonly object _attributes;
internal object Attributes
{
get { return _attributes; }
}

public Xml(string name, object attributes)
{
_name = name;
_attributes = attributes;
}
}
}

关于c# - 类特定常量是否应该包含在嵌套类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9473335/

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