c# - 将成对的键->值映射传递给函数的优雅语法?

标签 c# collections

我正在开发一个 API,它将从文件中读取字符串值并允许类型转换。我还需要它提供一种将给定字符串值“映射”到所需类型的特定值的方法。这看起来像这样:

int val = myObject.getValue<int>("FieldName", { { "", 0 }, { "INF", int.MaxValue } });

字段名称在那里,以便在发生错误时可以检索它。这对这个例子很重要,因为该函数需要采用不相关的第一个参数。

但是,我无法想出一种优雅且类型安全的语法来提供此功能(以上内容基于集合初始值设定项,只有在我将 new FieldValueMappingCollection<int> { ... } 插入其中时才有效)。


所以,我知道的选项是:

myObject.getValue<int>("FieldName", new FieldValueMappingCollection<int> { { "", 0 }, { "INF", int.MaxValue } });

myObject.getValue<int>("FieldName", "", 0, "INF", int.MaxValue);

其中 getValue 有 params object[]在其签名中。

一定有更好的方法来做到这一点,对吧?

最佳答案

更好的方法是使用 Dictionary<String, Int32>管他呢。在您的类(class)中设置一次,然后只需将字典传入即可。由于您正在制作一个 API,因此这是一种比使用元组更清晰和更具表现力的方式来声明您的意图。为这些类型的操作构建了一个字典,您的用户应该能够轻松理解该方法的意图。元组更难理解,尤其是当您处理简单的键值映射时。

此外,如果您想动态初始化,它可以使初始化更好: http://msdn.microsoft.com/en-us/library/bb531208.aspx

关于c# - 将成对的键->值映射传递给函数的优雅语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3389560/

相关文章:

java 如何改变排序的优先级

javascript - 将嵌套集合属性拉入数组

c# - yz Vector3 到 Vector2

c# - 下载需要使用 vb.net/c# 进行身份验证的文件?

python - 将收款柜台变成字典

java - 哈希集在哪里存储其哈希码与集合中已有的哈希码相匹配的对象?

java - 从列表创建固定大小的子列表,如果元素较少,则添加零以完成子列表

c# - 如何防止非移动 View 使用.Net MVC5 中的移动布局?

C# 到 Java 重写——泛型类

c# - 选择字符串中的上一个和下一个单词