.net - 使用属性引用字典中键值对的最佳方法

标签 .net dictionary properties constants

<分区>

这是一件相当微不足道的事情,但我很想听听人们对此的看法。

如果我有一个可以通过属性访问的字典,您更喜欢哪种格式的属性?

/// <summary>
/// This class's FirstProperty property
/// </summary>
[DefaultValue("myValue")]
public string FirstProperty {
    get {
        return Dictionary["myKey"];
    }
    set {
        Dictionary["myKey"] = value;
    }

这可能是典型的做法。它相当高效,易于理解等。唯一的缺点是使用更长或更复杂的 key 可能会拼错它或仅更改一个实例或其他内容,导致我这样做:

/// <summary>
/// This class's SecondProperty property
/// </summary>
[DefaultValue("myValue")]
private const string DICT_MYKEY = "myKey"
public string SecondProperty {
    get {
        return Dictionary[DICT_MYKEY];
    }
    set {
        Dictionary[DICT_MYKEY] = value;
    }

它稍微复杂一些,但似乎提供了额外的安全性,并且更接近于我认为的“代码完整”解决方案。不利的一面是,当属性上方已经有一个/// block 和一个 [DefaultValue()] block 时,它开始变得有点拥挤。

那么你更喜欢哪一个,为什么?有人有更好的想法吗?

最佳答案

我喜欢第二个纯粹是因为在代码中避免使用神奇的字符串/数字是一件好事。 IMO 如果你需要在代码中多次引用一个数字或字符串文字,它应该是一个常量。在大多数情况下,即使它只使用一次,它也应该是一个常量

关于.net - 使用属性引用字典中键值对的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44100/

相关文章:

javascript - 获取对象的属性名称

javascript - 无法向对象添加属性(无法设置未定义的属性)

c# - 如何显示我的电脑文件夹中的元素?

arrays - 在 Swift 中从字典中获取值或键时保留循环

c# - 将 ActionFilterAttribute 应用于整个 WebAPI?

python - 将列表的列表转换为列表的字典

java - 在 Map 中管理字符串

java - 在 JSP 上使用 jSTL setBundle 从 jar 读取属性文件

c# - DebuggerStepThrough、DebuggerHidden 在异步等待方法中不起作用

c# - XmlTextReader 与 XDocument